【发布时间】:2016-12-01 17:06:56
【问题描述】:
是否可以添加self - 我的意思是当前对象是ManyToManyField?
class City(models.Model):
name = models.CharField(max_length=80)
country = models.ForeignKey('Country')
close_cities = models.ManyToManyField('City',blank=True, related_name='close_cities_set')
如果我创建假设x = City.objects.create(...),我希望x 默认成为close_cities 的一部分。
我找不到与此问题相关的任何内容。我试图覆盖create() 方法,但没有成功。
经过尝试,我决定创建一个信号,在创建实例后添加城市。不幸的是,这不起作用,但我不知道为什么。正在调用信号,条件if created 为True(选中)。
@receiver(post_save,sender=myapp_models.City)
def add_self_into_many_to_many_field(sender, instance, created, **kwargs):
if created:
instance.close_cities.add(instance)
instance.save()
你知道问题出在哪里吗?
【问题讨论】:
-
如果我理解你的话,你想将 City
x添加到自身作为close_city? -
是的。 x 是城市。我希望 x 成为 x.close_cities 的一部分
-
如果您希望一个表与其自身具有多对多关系,那么您可能的设计是错误的。
-
如果您添加一个名为
close_cities的property并返回您的字段中的内容以及对象本身,该怎么办? -
你试过
close_cities = models.ManyToManyField("self")吗?
标签: python django django-models django-signals