Das ist mein Modell:Erstellen einer Beziehung eine Django abstrakte Klasse verwenden und diese Klasse vererben schafft zwei Rückwärts Beziehungen aus irgendeinem Grund
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
Nun, wenn ich Python-Shell öffnen und dies tun:
a = User.objects.get(username='a')
dir(a)
Dann diese beiden erscheinen:
['myapps_set', 's_set']
und wenn ich das tue:
a.s_set.all()
es gibt ein S
Objekt, aber wenn, wenn ich tun:
a.myapps_set.all()
es gibt drei S
Objekte (die erste S
Objekt, um es zurückgibt, ist die gleiche, die zurückgegeben wurde, als ich a.s_set.all()
tun. Meine zwei Fragen sind,
1) Wie kommt es, auch wenn ich speziell owner = models.ForeignKey(User, related_name="%(app_label)s%(class)s_set")
tat, kann ein s_set
mit einem Benutzerobjekt zugegriffen werden?
2), wie sie kommen zwei verschiedene Arten von Objekten zurückkehren (dh wie kommt myapps_set.all()
kehrt 3 (die richtige Antwort) während s_set.all()
nur eine gibt?
welche Version von django ..? – Satyajeet
@Satyajeet Django 1.8 – user2719875