亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 CreateView 中為自定義用戶模型設置外鍵?

如何在 CreateView 中為自定義用戶模型設置外鍵?

蠱毒傳說 2021-12-08 16:04:46
我有這個自定義用戶模型“es_user”models.pyclass es_user(models.Model):user = models.OneToOneField(User, on_delete=models.CASCADE)class es_event(models.Model):    ev_name = models.CharField(max_length=100)    ev_venue = models.CharField(max_length=100)    ev_admin =  models.ForeignKey('es_user',related_name='events',on_delete=None)最終,我將向 es_user 添加更多字段,這就是我使用自定義用戶模型的原因。所以我不能滿足于 django 的內置用戶模型。views.pyclass CreateEventView(LoginRequiredMixin,CreateView):    model = es_event    fields = ['ev_name','ev_venue','ev_date','ev_description']    def form_valid(self, form):        form.instance.ev_admin = self.request.user        return super(CreateEventView, self).form_valid(form)當我提交表單時出現此錯誤Cannot assign "<SimpleLazyObject: <User: randy>>": "es_event.ev_admin" must be a "es_user" instance.我已經檢查了 Django 文檔和其他堆棧溢出帖子,但在所有這些帖子中,外鍵都引用了 Django 的內置用戶模型
查看完整描述

3 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

所以只分配 es_user,而不是 auth 用戶。

form.instance.ev_admin = self.request.user.es_user


查看完整回答
反對 回復 2021-12-08
?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

當我對 views.py 和 models.py 進行一些更改時,一切正常


views.py


class CreateEventView(LoginRequiredMixin,CreateView):

model = es_event

fields = ['ev_name','ev_venue','ev_date','ev_description']

def form_valid(self, form):

    form.instance.ev_admin = self.request.user.es_user

models.py


class es_user(models.Model):

      user = models.OneToOneField(User,related_name='es_user', on_delete=models.CASCADE)


查看完整回答
反對 回復 2021-12-08
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

你可以es_user取而代之:

form.instance.ev_admin = es_user.objects.get(user=self.request.user)


查看完整回答
反對 回復 2021-12-08
  • 3 回答
  • 0 關注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號