好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Django表單外鍵選項初始化的問題及解決方法

Django表單外鍵選項初始化的問題及解決方法

熱門標簽:蘇州電銷機器人十大排行榜 幫人做地圖標注收費算詐騙嗎 溫州旅游地圖標注 遼寧400電話辦理多少錢 悟空智電銷機器人6 電信營業(yè)廳400電話申請 外呼不封號系統(tǒng) 江蘇房產電銷機器人廠家 荊州云電銷機器人供應商

問題描述

先說明一下問題的由來:
Django的模型中經常會用ForeignKey來關聯(lián)其他表格數(shù)據(jù)

class MeasureTask(models.Model):
    taskname = models.CharField(max_length=LEN_FULLNAME, verbose_name="任務名稱")
    road = models.ForeignKey(Road, on_delete=models.CASCADE, verbose_name="設計路段")
    # 路面層,附加一個參數(shù) ,指定這個層的厚度,相對于底層的厚度
    # road_level = models.ForeignKey(RoadLevel, on_delete=models.CASCADE, verbose_name="路面層")
    level_thick = models.IntegerField(default=0, verbose_name="層厚(mm)")
    # ...

使用Django的ModelForm轉化為表單代碼如下:

class MeasureTaskNewForm(forms.ModelForm):
    class Meta:
        model = MeasureTask
        fields = ('taskname', 'staff', 'start_mileage', 'end_mileage',
                  'road', 'level_thick', 'step', 'equip', 'comment')

如果不做進一步處理,在網(wǎng)頁中使用這個From時,關聯(lián)字段會自動轉化為一個select控件,里面包含了所有選項,如下圖:

實際應用時,需要對關聯(lián)的字段做一些選擇過濾。期望的結果如下:

解決方式

在From類中設置一個初始化函數(shù):

class MeasureTaskNewForm(forms.ModelForm):
    class Meta:
        model = MeasureTask
        fields = ('taskname', 'staff', 'start_mileage', 'end_mileage',
                  'road', 'level_thick', 'step', 'equip', 'comment')

    # 對參數(shù)作初始化設置,導致返回之后的Form驗證失敗
    def __init__(self, road_choices=None, *args, **kwargs):
        super(MeasureTaskNewForm, self).__init__(*args, **kwargs)
        if road_choices:
            self.fields['road'].choices = road_choices

應用這個類的方式如下,注意傳入?yún)?shù)的數(shù)據(jù)類型,

 # 對關聯(lián)數(shù)據(jù)過濾
        roads = Road.objects.filter(project=p_item) 
        # 生成值,分別對應于 html 中 select->option 設置
        choices = roads.values_list('id', 'name')
        dataform = MeasureTaskNewForm(road_choices=choices)
        # dataform = MeasureTaskNewFormShadow()
        return render(request, "mdata/html/measure_task_add.html", locals())

生成的html代碼:

select name="road" id="id_road" class="form-control">
  option value="1">北四環(huán)主線/option>
  option value="5">匝道A/option>
/select>

到這里生成的表單頁面沒有問題了,但是表單提交返回時如果還是用這個From來接收Request數(shù)據(jù),則會出現(xiàn)數(shù)據(jù)校驗失敗的問題

if request.method == "POST":
        dataform = MeasureTaskNewForm(request.POST)
        # 這里將出現(xiàn)校驗失敗的問題
        if dataform.is_valid():
            dataform.save()
        return redirect('mdata:measure_task', pid=p_item.id)

為了解決這個問題,另外做了一個沒有初始化函數(shù)的表單類來接收數(shù)據(jù).

# 影子表單模型
class MeasureTaskNewFormShadow(forms.ModelForm):
    class Meta:
        model = MeasureTask
        fields = ('taskname', 'staff', 'start_mileage', 'end_mileage',
                  'road', 'level_thick', 'step', 'equip', 'comment')
if request.method == "POST":
        dataform = MeasureTaskNewFormShadow(request.POST)
        if dataform.is_valid():
            dataform.save()
        return redirect('mdata:measure_task', pid=p_item.id)

感覺這里應該有更好的方法,嘗試對Form的初始化函數(shù)做了一些修改,但是沒有成功。

參考資料

https://qastack.cn/programming/813418/django-set-field-value-after-a-form-is-initialized

http://hk.uwenku.com/question/p-vdjpsmjn-bes.html

https://www.itranslater.com/qa/details/2325790729974580224

到此這篇關于Django表單外鍵選項初始化的文章就介紹到這了,更多相關Django表單初始化內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • django表單中的按鈕獲取數(shù)據(jù)的實例分析
  • Django def clean()函數(shù)對表單中的數(shù)據(jù)進行驗證操作
  • Django 構建模板form表單的兩種方法
  • Django form表單與請求的生命周期步驟詳解
  • Django model.py表單設置默認值允許為空的操作
  • Django表單提交后實現(xiàn)獲取相同name的不同value值
  • Django框架獲取form表單數(shù)據(jù)方式總結
  • django之從html頁面表單獲取輸入的數(shù)據(jù)實例
  • 解決django中form表單設置action后無法回到原頁面的問題
  • django-xadmin根據(jù)當前登錄用戶動態(tài)設置表單字段默認值方式
  • Django給表單添加honeypot驗證增加安全性

標簽:景德鎮(zhèn) 欽州 黃山 宿遷 三沙 喀什 濟南 臺灣

巨人網(wǎng)絡通訊聲明:本文標題《Django表單外鍵選項初始化的問題及解決方法》,本文關鍵詞  Django,表單,外鍵,選項,初始化,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Django表單外鍵選項初始化的問題及解決方法》相關的同類信息!
  • 本頁收集關于Django表單外鍵選項初始化的問題及解決方法的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 亚洲看黄| 国产呦交小U女精品视频| 亚洲一级精品A片久久蜜| 草莓污视频app| 国产人妻人伦精品九色威尼斯| 亚洲色噜噜狠狠网站人与鲁| 潘金莲新艳史1级| 果冻传媒国产传媒| 成人H漫画精精一区二区器材| 欧美白人性受XXXX做受Av| 人和zozo| 美女露100%胸无遮挡免费观看| 三个黑人巨大三根一起进| 好吊色永久免费视频网站| 爽死你个放荡小婬妇舌吻小说章节 | 5566日本婷婷色中文字幕| 欧洲无人区卡一卡二卡三| 做我的爱人3电影在线观看| 秀人网秀人集秀人vip| 17gay少爷ktv直播| qqq258成人网站| 在线亚洲高清揄拍自拍一品区| 苍井空《美人妻》| 午夜视频一区二区三区| 午夜影院免费版| 亚洲精品国产精品麻豆99的特点 | 久久成人免费视频| 被老师射在里面真爽| 美女露出奶头扒开屁股让男人桶| 久视频在线观看久视频| 精品国产乱码久久久A片| 国内精品91久久久久| 日本精品一区二区三区四区使用方法 | 人人揉揉揉人人捏人人看| 国产一级在线观看www色| 久久久亚洲熟妇熟女ⅩXXX蜜| 免费黄毛片| 波兰性xxxxx极品hd| 无遮挡使用性玩具视频在线| 男女又爽?又黄?免费3| 黑人中文字幕在线精品视频站|