问题描述
class Balance(models.Model):
croft = models.ForeignKey(Croft,on_delete=models.CASCADE,verbose_name='Участок')
remains = models.DecimalField(max_digits=10,decimal_places=2,default=0,blank=True,null=True,verbose_name='Остаток')
date_change = models.DateTimeField(auto_Now=True,verbose_name='Дата изменения')
def __str__(self):
return self.croft.number
@receiver(post_save,sender=Croft)
def create_balance(sender,instance,created,**kwargs):
if created:
Balance.objects.create(croft=instance)
税收计算模型
class Contributions(models.Model):
TYPE_CHOICES = (
('membership_fees','Членские взносы'),('targeted_contributions','Целевые взносы')
)
UNITS_CHOICES = (
('m2','за кв.м.'),('croft','за участок'),('per_hundred','за сотку')
)
name = models.CharField(max_length=120,verbose_name='Наименование')
type_contribution = models.CharField(max_length=100,choices=TYPE_CHOICES,verbose_name='Вид взносов')
croft = models.ManyToManyField(Balance,verbose_name='Участок')
sum_contribution = models.DecimalField(max_digits=10,verbose_name='Размер взноса')
units = models.CharField(max_length=100,choices=UNITS_CHOICES,verbose_name='ед. изм.')
date_contribution = models.DateField(default='',verbose_name='Срок уплаты')
all_crofts = models.BooleanField(default=True,verbose_name='Действует для всех участков')
round_to_range = models.BooleanField(default=False,verbose_name='Округлять в большую сторону')
def __str__(self):
return self.name
def save(self,*args,**kwargs):
if not self.id:
super(Contributions,self).save(*args,**kwargs)
self.croft = self.croft
self.croft.remains = self.croft.remains - (self.sum_contribution * self.croft.croft.area)
self.croft.save()
return super(Contributions,**kwargs)
如何正确重新定义多对多字段的计税模型。 禁止直接分配到多对多集合的前端。改用 croft.set()。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)