В форме Django не все поля заполнены для ввода данных

Я хотел использовать обе модели фермер (внешний ключ для трактора) и трактор в одной форме, но я не получаю поля трактора на веб-странице для ввода его значения, я получаю только поля фермера.

my models.py


class Farmer(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    phone =models.CharField(max_length=10)
    address = models.TextField(max_length=200)
    email_address = models.EmailField()

    def full_name(self):
        return f"{self.first_name} {self.last_name}"

    def __str__(self):
        return self.full_name()


class Post(models.Model):
    tractor_price = models.IntegerField(max_length=150)
    implimentaion = models.CharField(max_length=50)
    purchase_date = models.DateField(auto_now=False)
    slug = models.SlugField(unique=True, db_index=True, null=True,blank=True)
    tractor_company = models.CharField(max_length=50)
    tractor_model = models.CharField(max_length=50)
    description = models.TextField(validators=[MinLengthValidator(10)])
    date = models.DateField(auto_now_add =True)
    farmer = models.ForeignKey(
        Farmer, on_delete=models.SET_NULL, null=True, related_name="posts")

my view.py Только функция add_post

def add_post(request):
    if(request.method == "POST"):
        farmer_form = FarmerForm(request.POST)
        post_form = Post(request.POST)
        if(farmer_form.is_valid() and post_form.is_valid()):
            farmer = farmer_form.save()
            post = post_form.save(False) 
            post.farmer = farmer    
            post.save()
            return redirect(reverse("tractor.views.posts"))
    else:
        farmer_form = FarmerForm(request.POST)
        post_form = Post(request.POST)

    args = {}
    args.update(csrf(request))
    args["farmer_form"] = farmer_form
    args["tractor_form"] =post_form
    return render(request,"tractor/form.html",args)

forms.html

<div class="form-group">
  <form
    method="POST"
    style="margin-left: 40px; margin-right: 100px"
    enctype="multipart/form-data"
    action="{% url 'tractor:add_post' %}"
  >
    {% csrf_token %} 
    {{post_form}}
    {{farmer_form}}
    
    <input type="submit" class="btn btn-dark" value="Submit" />
  </form>
</div>

forms.py

class PostForm(ModelForm):
    class Meta:
        model = Post
        fields = ("tractor_price","implimentaion","purchase_date","tractor_company","tractor_model","description")

class FarmerForm(ModelForm):
    class Meta:
        model = Farmer
        fields = ('first_name','last_name','phone','address','email_address')

я также добавил изображение формы, которое также форма правильно выровнена, как вы можете видеть на снимке экрана, и я не получаю поля трактора формы, только получаю ввод формы фермера.

Скриншот веб-страницы, которую я получаю

Я думаю, что вы сделали это: args["tractor_form"]=post_form, но вы забыли использовать {{tractor_form}} в вашем html-файле.

Измените args["tractor_form"]=post_form на args["post_form"]=post_form
ИЛИ
Измените {{post_form}} в html-файле на {{tractor_form}}

EDIT

Вам не нужно делать так: farmer_form = FarmerForm(request.POST) в вашем else блоке.

farmer_form = FarmerForm(request.POST) # before
farmer_form = FarmerForm() # after.

EDIT2

Вы не должны помещать {{post_form}}, {{farmer_form}} и {% csrf_token %} внутри <> тега формы:

<div class="form-group">
  <form
    method="POST"
    style="margin-left: 40px; margin-right: 100px"
    enctype="multipart/form-data"
    action="{% url 'tractor:add_post' %}"
    >     <- this is where the form <> is finished.
    {% csrf_token %} 
    {{post_form}}
    {{farmer_form}}
    <input type="submit" class="btn btn-dark" value="Submit" />
  </form>
</div>
Вернуться на верх