Ну, если я понял, что вы хотите.
Вам придется изменить вашу модель на:
#models.py
class ModelA(models.Model)
field1 = models.CharField(max_length=10)
field2 = models.ForeignKey(ModelA)
class ModelB(models.Model)
field3 = models.CharField(max_length=10)
Итак, вы можете сделать:
#views.py
b = ModelB(field3 = 'goodbye')
c = ModelB(field3 = 'goodbye again')
a = ModelA(field1 = 'hello', field2 = [b, c])
d = ModelA(field1 = 'another', field2 = a.field2)
Или, если вы предпочитаете оставить свою модель, вы можете сделать:
#models.py
class ModelA(models.Model)
field1 = models.CharField(max_length=10)
class ModelB(models.Model)
field2 = models.CharField(max_length=10)
field3 = models.ForeignKey(ModelA)
#views.py
a = ModelA(field1 = 'hello')
b = ModelB(field2 = 'goodbye', field3 = a)
c = ModelB(field2 = 'goodbye again', field3 = a)
d = ModelA(field1 = 'another')
#here you get all the objects related to "a"
query = ModelB.objects.filter(field3=a)
#iterated over them
for obj in query:
obj.field3 = d
Другой способ, которым я думаю, может быть тем, что вы хотите:
#models.py
class ModelA(models.Model)
field1 = models.CharField(max_length=10)
field2 = models.ForeignKey(ModelA)
class ModelB(models.Model)
field3 = models.CharField(max_length=10)
field4 = models.ForeignKey(ModelA)
#views.py
a = ModelA(field1 = 'hello')
b = ModelB(field3 = 'goodbye', field4 = a)
c = ModelB(field3 = 'goodbye again', field4 = a)
d = ModelA(field1 = 'another', field2 = a)
Я думаю, что это сделано. Но я не знаю, я надеюсь, что это может быть полезно для вас. ^^