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