簡體   English   中英

如何在 Django 表單中顯示帶有外鍵和選項的單個表單?

[英]How to display a single form with Foreign Key and choices in a Django Form?

我的目標是與所有論文字段顯示一個形式,我堅持從城市模型顯示城市和描述字段,第一個需要與所有城市的選擇和其他的只是一個文本字段中顯示一個選擇框。

所以,我需要用這種格式顯示一個表單:

  • 城市(從所有選項中選擇框)

  • 描述

  • 日期

  • 地位

    CITIES_CHOICES = (('RJ', 'Rio de Janeiro'), ('NY', 'New York'), ('PIT', 'Pittsburgh')) class City(models.Model): city = models.CharField(max_length=50, choices=CITIES_CHOICES) description = models.TextField() def __str__(self): return self.city class Checkin(models.Model): destination = models.ForeignKey(City, on_delete=models.SET_NULL) date = models.DateTimeField() status = models.BooleanField()

我已經使用 Modelform 創建了一個表單,但是如何顯示 City 模型中的字段而不是正確顯示 de city 對象?

知道我現在需要去哪里嗎?

表格.py

class DocumentForm(forms.ModelForm):
    class Meta:
        model = Checkin

有幾種方法可以解決這個問題。 其中一個更簡單的方法是創建兩種形式,一個ModelFormCityModelFormCheckin 在視圖中,您可以將兩個表單傳遞給上下文並驗證這兩個表單。 您可以將它們加載到 HTML 頁面上的同一個表單標簽中。

我不會在Checkin表單中包含“city”字段,您可以在視圖中手動處理。

def some_view(request):
    if request.method == 'GET':
        city_form = CityForm()
        Checkin_form = CheckInForm()

    elif request.method == 'POST':
        city_form = CityForm(request.POST)
        checkin_form = CheckInForm(request.POST)
        if city_form.is_valid() and checkin_form.is_valid():
            city = city_form.save()
            date = checkin_form.cleaned_data.get('date')
            status = checkin_form.cleaned_data.get('status')
            Checkin.objects.create(
                destination=city,
                date=date,
                status=status
            )

    context = {
        'city_form': city_form,
        'checkin_form': checkin_form,
    }
    return render(request, <template>, context)

這是一個簡單的示例,您可以在單個表單中創建它,如果需要,甚至可以通過 API 創建。 我認為在基於類的視圖中也會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM