如何访问 Foreginkey 中的实例

时间:2021-02-17 19:09:54

标签: python django

我有一个包含 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
                                            )

0 个答案:

没有答案
相关问题