首先,這裏是我的模型。每串有從1到3的表演,每個表演掛幾串:嘗試獲取多個外鍵集合時,Django查詢集合給出attribute_error
class Performer(models.Model) :
name = models.CharField(max_length=60, default="None")
description = models.TextField(null=True, default=None)
class String(models.Model) :
index = models.IntegerField(null=True, default=None)
step = models.IntegerField(null=True, default=None)
process = models.CharField(max_length=100,null=True, default=None)
description = models.TextField(null=True, default=None)
performer = models.ForeignKey(Performer, related_name='performer', on_delete=models.CASCADE, null=True, default=None)
performer2 = models.ForeignKey(Performer, related_name='performer2', on_delete=models.CASCADE, null=True, default=None)
performer3 = models.ForeignKey(Performer, related_name='performer3', on_delete=models.CASCADE, null=True, default=None)
我需要設置與單個表演所有字符串。但是,如果我嘗試使用string_set
得到任何地方的表演外鍵指向字符串像這樣所有字符串:
p = Performer.objects.get(name="smth")# so p is a performer object
s = p.string_set.all()
我得到這個問題:
AttributeError: 'Performer' object has no attribute 'string_set'
而且我tryed使用具有相關名稱的過濾器,但是這給了我相同的錯誤。有沒有一種方法可以從任何指向相同類型的外鍵字段之一獲取_set?
感謝您的想法與manyToManyField,我心底先試試吧.. –
但我可以執行「s.performers.all()」其中s是單個字符串對象與這些模型? –
是的,你可以。但請記住,它的多對多關係如此's.performers.all()'也會返回一個查詢集,而不是一個對象 – canufeel