Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 石墨烯';不认识´;内容类型´;领域_Python_Django_Graphene Python - Fatal编程技术网

Python 石墨烯';不认识´;内容类型´;领域

Python 石墨烯';不认识´;内容类型´;领域,python,django,graphene-python,Python,Django,Graphene Python,我第一次尝试使用“graphene python”,到目前为止,我已经能够使用它,但我发现“graphene python”无法识别引用ContentType模型的ForeignKey字段 这是我的模型: class ReservationComponent(models.Model): reservation = models.ForeignKey(Reservation, on_delete=models.PROTECT, related_name='components', ver

我第一次尝试使用“graphene python”,到目前为止,我已经能够使用它,但我发现“graphene python”无法识别引用ContentType模型的ForeignKey字段

这是我的模型:

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"))
这是我的模式。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()
并且,在这张图中,您可以看到,graphene python不接受模型“ReservationComponent”的字段“content\u type”,即使它存在于模型中也是如此


我不知道我是否缺少任何设置或其他内容。

这是因为您没有django的
ContentType
模型的
DjangoObjectType

你可以通过

来自graphene\u django导入django对象类型
从django.contrib.contenttypes.models导入ContentType
类ContentObjectType(DjangObjectType):
类元:
模型=内容类型

根据,您必须为每个模型子类创建一个类型
djangObjectType

您可能缺少ContentType的类型。我不知道为什么有人否决了这个,但这是正确的答案。我猜否决票是因为OP希望通过magic透明地处理所有子类型,但如果是这样的话,那就完全是另一个问题了。