2016-03-20 20 views
1

Ben kendini referans FKs test tipik çalışma zamanı hatası alıyorum sahte nesnelerle django:; Model anne

... last 4 frames repeated, from the frame below ... 

/home/cchilders/.virtualenvs/clientsite/lib/python3.4/site-packages/model_mommy/mommy.py in make(model, _quantity, make_m2m, **attrs) 
    96   return [mommy.make(**attrs) for i in range(_quantity)] 
    97  else: 
---> 98   return mommy.make(**attrs) 
    99 
    100 

RuntimeError: maximum recursion depth exceeded while calling a Python object 

modeli:

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) 

docs FK olarak kendinizi başvuran üzerinde seyrek. Modelmommy ile kendinden birisini gerektiren bir örneği nasıl taklit edebilirsin? Teşekkür ederiz

cevap

1

Her şeyden önce, parent alanını null yapmalısınız; parent = models.ForeignKey('self', db_column='parent_id', null=True, blank=True), bu, referanslamaya başlamak için bir temel nesneye sahip olacağınız anlamına gelir.

Model anne ile önce bir sahte ebeveyn oluşturabilir, ardından üst öğeyi çocuğa atayabilirsiniz.

parent_item_group = mommy.make(ItemGroup) 
child_item_group = mommy.make(ItemGroup, parent=parent_item_group)