我有一个包含 3 个模型的应用
class Transaction(models.Model):
chp_reference = models.CharField(max_length=50, unique=True)
....
Class FamilyGroup(models.Model):
...
transaction = models.foreignkey(Transaction)
...
Class Familymember(models.Model):
...
transaction = models.foreignkey(Transaction)
family_group = models.foreignkey(FamilyGroup)
...
在另一个应用程序中,我有一个模型 Batch
,它将是三个应用程序的镜像,这个想法是这个应用程序将 imports
接受传入数据的 xlsx 文件,我想关于如何像这样完成它,但这不起作用我无法在 FamilyGroup
get_or_create
内创建 Transaction 实例,FamilyMember
class Batch(models.Model):
income_period_choices = (('Weekly', 'Weekly'),
('Fortnightly', 'Fortnightly'))
batch = models.CharField(max_length=50)
transaction_chp_reference = models.CharField(
max_length=50, null=True, blank=True)
transaction_rent_effective_date = models.DateField(null=True, blank=True)
transaction_income_period = models.CharField(
max_length=11, choices=income_period_choices, null=True, blank=True)
transaction_property_market_rent = models.DecimalField(
help_text='Weekly', max_digits=7, decimal_places=2, null=True, blank=True)
transaction_number_of_family_group = models.PositiveSmallIntegerField(
null=True, blank=True, validators=[MaxValueValidator(5), ])
transaction_cruser = models.CharField(max_length=50, null=True, blank=True)
transaction_prop_id = models.PositiveIntegerField(null=True, blank=True)
transaction_state = models.CharField(max_length=50, null=True, blank=True)
family_group_name = models.CharField(max_length=100, null=True, blank=True)
family_group_family_type = models.CharField(
max_length=50, null=True, blank=True)
family_group_alloc_id = models.PositiveIntegerField(null=True, blank=True)
family_group_last_rent = models.DecimalField(
help_text='per week', max_digits=7, decimal_places=2, null=True, blank=True)
family_group_any_income_support_payment = models.BooleanField(
null=True, blank=True)
family_group_cra_eligibilty = models.BooleanField(
help_text='legislated', null=True, blank=True)
family_group_cra_amount = models.DecimalField(
help_text='per week', max_digits=6, decimal_places=2, null=True, blank=True)
family_group_ftb_a = models.DecimalField(
'FTB-A', help_text='Legislated - per week', max_digits=6, decimal_places=2, null=True, blank=True)
family_group_ftb_b = models.DecimalField(
'FTB-B', help_text='Legislated - per week', max_digits=6, decimal_places=2, null=True, blank=True)
family_group_maintenance_amount = models.DecimalField(
max_digits=7, decimal_places=2, null=True, blank=True, help_text='Per year')
family_group_maintenance_type = models.CharField(
max_length=50, null=True, blank=True)
family_group_number_of_additional_children = models.IntegerField(
null=True, blank=True)
family_member_name = models.CharField(
max_length=100, null=True, blank=True)
family_member_contact_id = models.PositiveIntegerField(null=True, blank=True, unique=True)
family_member_surname = models.CharField(max_length=100, null=True, blank=True)
family_member_partnered = models.BooleanField(null=True, blank=True)
family_member_date_of_birth = models.DateField(null=True, blank=True)
family_member_relationship = models.CharField(
max_length=50, null=True, blank=True)
family_member_dependant_child_age_range = models.CharField(max_length=50,null = True, blank = True)
family_member_care_percentage = models.PositiveSmallIntegerField(
null=True, blank=True, validators=[MaxValueValidator(100), ])
family_member_income = models.DecimalField(
max_digits=6, decimal_places=2, null=True, blank=True)
family_member_rent_percentage = models.PositiveSmallIntegerField(
null=True, blank=True, validators=[MaxValueValidator(100), ])
message = models.CharField(max_length=500, null=True, blank=True)
def __str__(self):
return str(self.batch)
@receiver(post_save, sender=Batch)
def post_save_tranaction(sender, instance, created, **kwargs):
message = ''
if created:
Transaction.objects.update_or_create(chp_reference=instance.transaction_chp_reference,
defaults={
'rent_effective_date':instance.rent_effective_date, ..... , .....
}
)
transactions = []
transaction = Transaction.objects.all()
for i in transaction:
transactions.append(i.pk)
FamilyGroup.objects.update_or_create(name=instance.family_group_name,
transaction__in=transactions
)