Джанго графен, как ни странно, не включает в себя одно из моих полей модели - PullRequest
0 голосов
/ 26 апреля 2018

Я потратил часы на это, и не повезло, это похоже на ошибку.Все поля отображаются в результатах моего запроса, кроме «типа», и нет разницы между «типом» и «эмитентом», например, оба являются внешними ключами.Графен случайно удаляет тип, пока он там, и когда я печатаю его в резольвере, я вижу, что он имеет значение.Когда я пытаюсь запросить тип поля в graphiql, я получаю следующую ошибку: «Невозможно запросить поле \» type \ "on type \" Post \ "."Есть мысли?

class T(models.Model):
    type=models.CharField(default="type 1",null=False,blank=False,max_length=40)

    def str(self):
        return self.type

class Post(models.Model):
    slug=models.SlugField(unique=True)
    issuer=models.ForeignKey(User,on_delete=models.SET_NULL,blank=False,null=True,related_name="posts")
    date_created=models.DateTimeField(default=timezone.now)
    last_edited=models.DateTimeField(null=True)
    num_interests = models.IntegerField(verbose_name="Number of interests so far",default=0)
    status=models.CharField(max_length=30,default="posted")
    tags=TaggableManager()
    title=models.CharField (max_length=200,blank=False)
    description =models.TextField(max_length=settings.MAX_TEXTAREA_LEN,default="",
    validators=[MaxLengthValidatorFactory(settings.MAX_TEXTAREA_LEN)],blank=False)
    goodUntil = models.DateField(verbose_name=_("Date"),default=datetime.now()+timedelta(days=7))
    subjects=models.ManyToManyField(to=Subject,related_name='posts',blank=False)
    type=models.ForeignKey(T,on_delete=models.SET_NULL,blank=False,null=True,related_name="type")

1 Ответ

0 голосов
/ 26 апреля 2018

Если я правильно помню, это ошибка в графене - графен использует type внутри, что мешает полю модели с этим именем.Я считаю, что, возможно, я сталкивался с этой проблемой в прошлом и решил ее, переименовав поля моей модели.

В вашем случае, например, переименовать type -> post_type.

Понятно, что графен имеет это ограничение, потому что __type имеет специфическое значение в graphQL.Например, это правильный запрос для DjangoObjectType с именем «MyType»:

{ __type(name:"MyType") {
    fields {
      name
      description
      }  
    }
}
...