1
我在使用get_or_create()在我的視圖中遇到問題。 我想要做的是讓用戶每當想要添加關鍵字時獲取或創建關鍵字模型的實例。Django - get_or_create()的問題
我有一個關鍵詞模型,看起來像這樣:
class Keyword(models.Model):
word = models.CharField(max_length=30, unique=True, default=None)
members = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, default=None)
def __str__(self):
return self.keywords
我有一個表格來創建關鍵字:
class KeywordForm(forms.ModelForm):
keywords = forms.CharField(max_length=30)
def __init__(self, *args, **kwargs):
super(KeywordForm, self).__init__(*args, **kwargs)
self.fields["keywords"].unique = False
class Meta:
fields = ("keywords",)
model = models.Keyword
我在視圖中嘗試不同的東西,這是我的當前版本,不使用get_or_create。它不僅創造了關鍵字:
class KeywordCreationView(LoginRequiredMixin, generic.CreateView):
form_class = forms.KeywordForm
model = models.Keyword
page_title = 'Add a new keyword'
success_url = reverse_lazy("home")
template_name = "accounts/add_keyword.html"
def form_valid(self, form):
var = super(KeywordCreationView, self).form_valid(form)
self.object.user = self.request.user
self.object.save()
self.object.members.add(self.object.user)
return var
應該怎樣我的觀點看,爲了得到關鍵字,如果它存在,如果這樣做,將用戶添加爲「成員」。如果沒有,請創建關鍵字。
感謝您的幫助!
嗨,對不起,我花了這麼長的時間來回答。我沒有設法使它與你的答案一起工作。但是你的確引導了我朝着正確的方向前進:我最終放棄了基於類的視圖,並進行了簡單的(未分類的視圖)。它的工作原理 - 說實話太容易了。謝謝! –
是的,我也不是基於課堂觀點的粉絲。 – e4c5