Как создать прибор, содержащий GenericRelation? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь создать прибор для моих тестовых случаев. Тем не менее, я получаю сообщение об ошибке при запуске теста python manage.py и python manage.py loaddata:

TypeError: Проблема с установкой фикстуры ... Объект 'GenericRelatedObjectManager' не повторяется

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

python manage.py dumpdata --exclude=contenttypes --exclude=auth --natural-foreign --natural-primary --format=json --indent=4 > website/fixtures/website.json

Проходя трассировку, ошибка возникает по адресу:

Файл "C: \ Users \ Имя \ Anaconda3 \ lib \ site-packages \ django \ contrib \ contenttypes \ fields.py", строка 614, в наборе

objs = tuple(objs)

Он пытался перебрать поле под названием «избранное», которое имеет общие отношения. Данные хранятся в следующем

'favorite':<django.contrib.contenttypes.fields.create_generic_related_manager.<locals>.GenericRelatedObjectManager object at 0x000001C758C25470>

Вот мои модели:

class Activity(models.Model):
    FAVORITE = 'F'

    ACTIVITY_TYPES = (
        (FAVORITE, 'Favorite'),
    )
    user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    activity_type = models.CharField(max_length=1, choices=ACTIVITY_TYPES)
    date = models.DateTimeField(auto_now_add=True)

    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey()

    def __str__(self):
        return self.activity_type 


class Page(models.Model):
    #need to see how to use pk of user already signed in
    user = models.ForeignKey(CustomUser , on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    description = models.TextField(blank=False, null=False)
    favorite = GenericRelation(Activity, related_query_name='favorite')
    ratings = GenericRelation(Rating, related_query_name='object_list')

    def __str__(self):
        return  self.recipeName

    def description_list(self):
        return self.description.split('\r\n')

Я использую Django 1.10.5

...