如果我在我的数据库中创建一个由以下建模的新用户:
如果这个问题没有意义,我更想知道示例网址中的数据位于:url(r'^members/(?P<username>\w+)/$', 'profiles.views.single')
到底是什么以及如何创建这样的字段?
from django.db import models
from django.contrib.auth.models import User
class Address(models.Model):
user = models.ForeignKey(User)
street_address = models.CharField(max_length = 200)
city = models.CharField(max_length = 100)
state = models.CharField(max_length = 100)
zipcode = models.IntegerField(max_length = 5)
updated = models.DateTimeField(auto_now = True, auto_now_add = False)
timestamp = models.DateTimeField(auto_now = False, auto_now_add = True)
active = models.BooleanField(default = True)
def __str__(self,):
return (self.user)
如何才能根据该模型中的用户映射正则表达式URL?可能吗? 或者甚至是电话号码,如果我有一个电话号码字段。只是好奇,试图更好地理解正则表达式。谢谢!
我想要像
这样的东西def single(request, username1):
try:
user = Address.objects.get(Address.user=username1)
single_user = user
except:
raise Http404
return render_to_response('single_user.html', locals(), context_instance=RequestContext(request))
使用:
url(r'^members/(?P<username1>\w+)/$', 'profiles.views.single')
答案 0 :(得分:0)
从这个问题的角度来看,正则表达式与模型无关。相反,Django会根据网址映射导入和调用视图。
查看与模特的交易。查看How Django processes a request
上的文档url(r'^members/(?P<username>\w+)/$', 'profiles.views.single')
如果请求来到DOMAIN / members / username profiles.views.single
,则会调用此视图。
有效的用户名格式为\w
。 \w
代表&#34;字符&#34;,通常是[A-Za-z0-9 _]
username是User模型的字段,来自django.contrib.auth.models
同时检查URL dispatcher和Regular expression operations。
按用户名过滤
Address.objects.filter(user__username=username1) #user is a Foreignkey
对于常规字段
Address.objects.filter(field_to_filter=view_argument)
答案 1 :(得分:0)
您给出的示例代码唯一的错误就是如何执行查询:您不在括号内使用类名。
user = Address.objects.get(user=username1)
如果你没有那里的catch-all except子句,你会收到一个可能帮助你自己调试的SyntaxError:这就是为什么拥有它们是一个非常糟糕的主意。只捕获Address.DoesNotExist
例外,甚至更好地使用get_object_or_404
快捷方式。