社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Graphene Python无法识别“内容类型”字段

HuLu ViCa • 6 年前 • 1901 次点击  

我第一次尝试使用“graphene python”,到目前为止,我已经能够让它工作,但我发现“graphene python”无法识别 外键 引用的字段 内容类型 模型。

这是我的模型:

class ReservationComponent(models.Model):
    reservation = models.ForeignKey(Reservation, on_delete=models.PROTECT, related_name='components', verbose_name=_("Reservation"))
    dertour_bk = models.CharField(null=True, blank=True, max_length=15, verbose_name=_("Dertour Bk"))
    day = models.DateField(verbose_name=_('Day'))
    content_type = models.ForeignKey(ContentType, on_delete=models.PROTECT)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')
    comment = models.TextField(null=True, blank=True, verbose_name=_("Comment"))
    is_invoiced = models.BooleanField(default=False, verbose_name=_("Is Invoiced"))

这是我的 schemas.py模式 :

import graphene
from graphene_django.types import DjangoObjectType
from ReservationsManagerApp.models import Reservation, ReservationComponent
from InvoicesManagerApp.models import Invoice, InvoiceEntry, InvoiceEntryComponent
from PaymentsManagerApp.models import Payment, PaymentReservationComponent

class ReservationType(DjangoObjectType):
    class Meta:
        model = Reservation

class ReservationComponentType(DjangoObjectType):
    class Meta:
        model = ReservationComponent

class InvoiceType(DjangoObjectType):
    class Meta:
        model = Invoice

class InvoiceEntryType(DjangoObjectType):
    class Meta:
        model = InvoiceEntry

class InvoiceEntryComponentType(DjangoObjectType):
    class Meta:
        model = InvoiceEntryComponent

class PaymentType(DjangoObjectType):
    class Meta:
        model = Payment

class PaymentReservationComponentType(DjangoObjectType):
    class Meta:
        model = PaymentReservationComponent

class  Query(object):
    all_reservations = graphene.List(ReservationType)
    all_reservation_components = graphene.List(ReservationComponentType)
    all_invoices = graphene.List(InvoiceType)
    all_invoice_components = graphene.List(InvoiceEntryType)
    all_invoice_entries_components = graphene.List(InvoiceEntryComponentType)
    all_payment = graphene.List(PaymentType)
    all_payment_reservation_components = graphene.List(PaymentReservationComponentType)

    def resolve_all_reservations(self, info, **kwargs):
        return Reservation.objects.all()

    def resolve_all_reservation_components(self, info, **kwargs):
        return ReservationComponent.objects.select_related('reservation').all()

    def resolve_all_invoice_entries_components(self, info, **kwargs):
        return InvoiceEntryComponent.objects.select_related('reservation_component').all()

    def resolve_all_payment_reservation_components(self, info, **kwargs):
        return PaymentReservationComponent.objects.select_related('reservation_component').all()

并且,在此图像中,您可以看到模型保留组件的字段内容类型不被接受 石墨烯蟒蛇 ,即使它存在于模型中。

enter image description here

我不知道我是否遗漏了任何设置或什么。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39653
文章 [ 1 ]  |  最新文章 6 年前
Sabbiu Shah
Reply   •   1 楼
Sabbiu Shah    6 年前

因为你没有 DjangoObjectType 为Django's ContentType 模型。

你可以创造它,

from graphene_django import DjangoObjectType
from django.contrib.contenttypes.models import ContentType

class ContentObjectType(DjangoObjectType):

    class Meta:
        model = ContentType

按照 documentation ,必须为每个模型子类创建类型 djangoobjecttype