Python 将其他数据保存到Django中的用户配置文件
我已经启用了用户创建配置文件的功能;但是,一旦用户已经登录,我需要能够将其他数据保存到配置文件中 假设John已登录。登录后,他决定将某个术语加入书签。每次他为一个术语(当前页面的url)添加书签时,它都会被添加到与他的个人资料相关联的“术语”部分 我不确定如何允许添加多个术语-我不认为CharField是正确的,我也不知道如何将模板中的表单链接到视图,以便它实际将这些数据保存到配置文件中。以下是我目前拥有的: models.pyPython 将其他数据保存到Django中的用户配置文件,python,django,Python,Django,我已经启用了用户创建配置文件的功能;但是,一旦用户已经登录,我需要能够将其他数据保存到配置文件中 假设John已登录。登录后,他决定将某个术语加入书签。每次他为一个术语(当前页面的url)添加书签时,它都会被添加到与他的个人资料相关联的“术语”部分 我不确定如何允许添加多个术语-我不认为CharField是正确的,我也不知道如何将模板中的表单链接到视图,以便它实际将这些数据保存到配置文件中。以下是我目前拥有的: models.py class UserProfile(models.Model):
class UserProfile(models.Model):
user = models.OneToOneField(User)
terms = models.CharField(max_length=1000)
views.py
以下是我创建用户的方式:
def register(request):
context = RequestContext(request)
registered = False
if request.method == 'POST':
user_form = UserForm(data=request.POST)
profile_form = UserProfileForm(data=request.POST)
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
profile = profile_form.save(commit=False)
profile.user = user
profile.save()
registered = True
else:
print user_form.errors, profile_form.errors
else:
user_form = UserForm()
profile_form = UserProfileForm()
return render_to_response(
'app/register.html',
{'user_form': user_form, 'profile_form': profile_form, 'registered': registered},
context)
这就是我试图对术语所做的:
def terms(request):
context = RequestContext(request)
url = request.get_full_path()
profile = UserProfile()
profile.topics = url
profile.save()
return render_to_response('app/page1.html', {}, context)
url.py
url(r'^terms/$', views.terms, name='terms'),
和模板文件
<form method="post" action="{% url 'terms' %}" enctype="multipart/form-data">
{% csrf_token %}
<input type="submit" name="submit" value="Save" />
</form>
{%csrf_令牌%}
我想你可以用它为任何没有代码的用户保存书签。
或者添加型号smt关于这样的术语
class Term(models.Model):
user = models.ManyToManyField(User, related_name='terms')
term = models.CharField(max_length=1000)
并使用user.terms.all()获取所有用户的术语
但是,若您需要保存模式和模型,则需要自定义字段,该字段的工作方式类似于postgres中的数组字段。如果您使用postgresql数据库,请添加到您的项目中,并使用TextArrayField等术语,如果您的数据库不是postgres,请参见此处-
第二个答案题为“过早优化是万恶之源”,由用户jb提供
具有关系的解决方案是“规范化的”——简单而强大
使用“阵列字段”的解决方案是“非规范化的”——速度更快,但存在数据不一致的风险