Как я могу обновить определенное поле с помощью отношения внешнего ключа

Я хочу обновить поле, которое называется level. Моя связь выглядит следующим образом. Я использую модель django User. Которая расширяется до расширенного пользователя, как показано ниже:-

class ExtendedUser(models.Model):
    levels_fields = (
        ("NEW SELLER", "NEW SELLER"),
        ("LEVEL1", "LEVEL1"),
        ("LEVEL 2", "LEVEL 2"),
        ("LEVEL 3", "LEVEL 3")
    )
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    email = models.EmailField(null=True, unique=True)
    contact_no = models.CharField(max_length=15, null=True)
    profile_picture = models.ImageField(upload_to="images/", null=True)
    country = models.ForeignKey(Country, on_delete=models.CASCADE, null=True)
    city = models.ForeignKey(City, on_delete=models.CASCADE, null=True)
    level = models.CharField(max_length = 120, null=True, blank=True, choices=levels_fields, default="NEW SELLER")

У меня есть поле "Уровень", которое содержит множество вариантов. Теперь у меня есть модель с именем Checkout

Это модель кассы :-

class Checkout(models.Model):
    ORDER_CHOICES = (
        ("ACTIVE", "ACTIVE"),
        ("LATE", "LATE"),
        ("DELIVERED", "DELIVERED"),
        ("CANCELLED", "CANCELLED"),
    )
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    seller = models.ForeignKey(
        User, on_delete=models.CASCADE, null=True, related_name='seller')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now_add=True)
    first_name = models.CharField(max_length=120)
    last_name = models.CharField(max_length=120)
    package = models.ForeignKey(OfferManager, on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField(default=0)
    price = models.DecimalField(decimal_places=2, max_digits=10, default=0.00)
    total = models.DecimalField(decimal_places=2, max_digits=10, default=0.00)
    grand_total = models.DecimalField(
        decimal_places=2, max_digits=10, default=0.00, null=True)
    paid = models.BooleanField(default=False)
    due_date = models.DateField(null=True)
    order_status = models.CharField(max_length=200, choices=ORDER_CHOICES, default="ACTIVE")
    is_complete = models.BooleanField(default=False, null=True)

У меня есть другая модель, которая называется SellerSubmit, и checkout здесь является внешним ключом. Вот модель :-

class SellerSubmit(models.Model):
    checkout = models.ForeignKey(Checkout, on_delete=models.CASCADE, related_name="checkout")
    file_field = models.FileField(upload_to="files/", null=True)
    submit_date = models.DateField(auto_now_add=True, null=True)

    def __str__(self):
        return str(self.id)

    
    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)

Теперь, когда продавец публикует сообщение в SUbmitModel, он будет обновлять уровень до LEVEL1. Как это можно сделать,

Вот что я попробовал :-

def sellerSubmitView(request, pk):
    form = SellerSubmitForm()

    if request.method == "POST":
        file_field = request.FILES.get("file_field")
        try:
            checkout = Checkout.objects.get(id=pk)
            # print(file_field)
        except:
            return redirect("manage-order")
        else:
            SellerSubmit.objects.create(checkout=checkout, file_field=file_field)
            checkout.order_status ="DELIVERED"
            
            chk = checkout.is_complete = True
            
            l = Checkout.objects.filter(is_complete = True).filter(seller=request.user).count()
            print("Count:" + str(l))
            
            
            if l > 5:
                out = checkout.seller.extendeduser.level = "LEVEL1"
                print(out)
                checkout.save()
        
            print(chk)
            checkout.save()
            
            
            
            return redirect("manage-order")

    args = {
        "form": form,
        "checkout_id": pk,
    }
    return render(request, "wasekPart/sellerSubmit.html", args)

Это должно решить вашу проблему

out = checkout.seller.extendeduser.level = "LEVEL1"
print(out)
checkout.seller.extendeduser.save()
checkout.save()

Виноват, что не заметил, что ExtendedUser не расширяется из User.

Пожалуйста, дайте мне знать, получилось или нет

checkout.seller.extendeduser.level = "LEVEL1" checkout.seller.extendeduser.save()

Вернуться на верх