兩個倒退的關係這是我的模型:創建使用Django的抽象類的關係和繼承該類創建某種原因
class Post(models.Model):
owner = models.ForeignKey(User, related_name="%(app_label)s%(class)s_set")
post = models.CharField(max_length=400)
class Meta:
abstract = True
class DS(Post):
location = models.ForeignKey(Location, blank=True, null=True, related_name="%(app_label)s%(class)s_set")
class Meta(Post.Meta):
abstract = True
class S(DS):
# same as DS
pass
現在,當我打開Python的外殼和做到這一點:
a = User.objects.get(username='a')
dir(a)
那麼這兩個出現:
['myapps_set', 's_set']
當我做:
a.s_set.all()
它返回一個S
對象,但是當我做:
a.myapps_set.all()
它返回三個S
對象(第一S
對象返回是,當我做a.s_set.all()
這是返回的相同。我的兩個問題是,
1)即使我專門做了owner = models.ForeignKey(User, related_name="%(app_label)s%(class)s_set")
,s_set
能夠通過用戶對象訪問嗎?
2)怎麼來的他們返回兩套不同的對象(即怎麼來myapps_set.all()
回報3(正確答案),而s_set.all()
只返回一個?
哪個版本的django ..? – Satyajeet
@Satyajeet Django 1.8 – user2719875