0
后,我有这样的模式:Django管理 - 填充等领域不断变化的外键
class Order(models.Model):
client = models.ForeignKey(
Client,
on_delete=models.CASCADE,
related_name='orders',
related_query_name='order',
)
delivery_country = CountryField('Kraj wysyłki', null=True, blank=True)
delivery_city = models.CharField('Miasto wysyłki', max_length=255, null=True, blank=True)
delivery_street = models.CharField('Ulica wysyłki', max_length=255, null=True, blank=True)
billing_country = CountryField('Kraj dla faktury', null=True, blank=True)
billing_city = models.CharField('Miasto dla faktury', max_length=255, null=True, blank=True)
billing_street = models.CharField('Ulica dla faktury', max_length=255, null=True, blank=True)
products = models.ManyToManyField(Product, through='OrderProduct')
class Client(models.Model):
name = models.CharField('Imię', max_length=255)
surname = models.CharField('Nazwisko', max_length=255)
country = CountryField('Kraj', null=True, blank=True)
city = models.CharField('Miasto', max_length=255, null=True, blank=True)
street = models.CharField('Ulica', max_length=255, null=True, blank=True)
而且我想实现这种行为在Django管理: 的Order.client
的每一个变化之后,我想预填充其他领域像这样:
Order.delivery_country = client.country
Order.delivery_city = client.city
Order.delivery_street = client.street
Order.billing_country = client.country
Order.billing_city = client.city
Order.billing_street = client.street
是否有任何包/插件来实现这一目标? 或者,你可能有一些想法,我怎么能做到这一点?
如果订单的细节是客户的字面上的细节,为什么你会储存数据的顺序呢?直接从'client'外键中取出它。 – Monkpit
此外,我不同意您使帐单信息与运输信息相同,但这是一个完全独立的问题。如果我为我的朋友或亲戚购买礼物,而且我想将订单发送到与我的结算信息不同的位置?如果我为我的业务购买材料,但结算地点在总部,那么这些零件应该运送到另一个工厂? – Monkpit
不幸的是我需要这两个地址。我不能将它们从外键拿走,因为客户的地址可能会在将来发生变化,我想要保持实际的分发地址。我需要两个地址,因为有时公司有一个地址要发票,他们的仓库在不同的地方。 – Blejwi