2016-03-20 6 views
0

Ich bin die typische Laufzeitfehler von selbst immer FKs Tests django mit gefälschten Objekte verweisen:Umgang mit selbstreferentiellen Fremdschlüsseln; django Mischer

In [12]: from mixer.backend.django import mixer 

In [13]: x = mixer.blend(ItemGroup) 


/home/cchilders/.virtualenvs/clientsite/lib/python3.4/site-packages/django/db/models/fields/related.py in __set__(self, instance, value) 
    587    raise ValueError(
    588     'Cannot assign None: "%s.%s" does not allow null values.' % 
--> 589     (instance._meta.object_name, self.field.name) 
    590   ) 
    591   elif value is not None and not isinstance(value, self.field.rel.to): 

ValueError: Mixer (<class 'clientsite.gacl.models.AroGroup'>): Cannot assign None: "AroGroup.parent" does not allow null values. 

das Modell:

class ItemGroup(models.Model): 
    parent = models.ForeignKey('self', db_column='parent_id') 
    name = models.CharField(max_length=255) 
    value = models.CharField(max_length=255, unique=True) 

    class Meta: 
     db_table = u'item_groups' 

    def __str__(self): 
     return self.value 

    def __repr__(self): 
     return '<{} {}: {}>'.format(self.__class__.__name__, self.pk, self.value) 

Die docs spärlich sind auf sich selbst als FK verweisen. Wie kann man eine Instanz fälschen, die auf einem von sich mit Django-Mixer benötigt? Danke

Antwort

1

Versuchen Sie, null=True zur Deklaration des Feldes parent hinzuzufügen. Es muss mindestens eine Top-Level ItemGroup geben, die kein Elternteil haben wird.

Verwandte Themen