我有一个django表单,我想自定义清理.我不想仅仅像这里那样指定错误消息(Django表单和字段验证),而是想自己改变字段.我尝试了一些方法,但一直遇到错误,就像cleaning_data是不可变的一样.
所以为了解决这个问题,我制作了一份副本,对其进行了修改并重新分配给了自己.这是最好的方法吗?可以/我应该在视图中处理这个吗?制作副本似乎很糟糕,但我一直遇到"不可变"的障碍.下面的示例代码我只是检查主题是否在末尾有'--help',如果没有添加它.谢谢
def clean(self):
cleaned_data=self.cleaned_data.copy()
subject=cleaned_data.get['subject']
if not subject.endswith('--help'):
cleaned_data['subject']=subject+='--help'
self.cleaned_data=cleaned_data
return self.cleaned_data
Run Code Online (Sandbox Code Playgroud) 我有一个模型(用户和书籍)的现有项目.我想在现有模型Books中添加ManyToMany(M2M)字段,但syncbb命令不会这样做.
详细信息:图书已经有一个映射到用户的FK字段,我想添加一个也映射到用户的新M2M字段(阅读器).如你所知,Django的syncdb只关心表,所以添加一个普通字段很容易,但是M2M需要一个新的连接表(app_books_user),所以不应该像任何其他新表那样使用syncdb cmd添加它吗?它为Book的'卖家'领域创建了我的另一个联合表.
当我运行syncdb时,我最初收到一条错误,指示我使用'related_name'参数来帮助区分对User的两个引用.我加了那些.但是,当我再次运行syncdb时,它不会创建新的连接表(但它现在没有错误).当我通过Shell查看它时存在新字段,但是不能使用它b/c连接表不存在.我通过'sqlall'cmd查看了sql代码,它打印出新表的SQL,但它没有被执行.
我错过了什么?我应该通过我的数据库浏览器强制SQL(来自sqlall)吗?这有什么影响吗?代码如下:
Models.py
from django.contrib.auth.models import User
class Seller(models.Model):
...
class Books(models.Model):
name=models.CharField(max_length=50)
author=models.ForeignKey(User, related_name='creator')
readers=models.ManyToManyField(User, blank=True, related_name='viewers')
sellers=models.ManyToManyField(Seller)
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在我的MAC上开发一个django应用程序.django附带的开发服务器很棒.但是,我安装了django-authopenid(将django-registration app与openID结合使用),遵循3步流程:用户注册,app发送带链接的确认电子邮件,用户点击链接确认注册.
由于django开发服务器没有邮件服务器,如何测试该进程的此确认电子邮件部分?我按照一个想法将电子邮件的内容打印到终端,但我不能按照链接.有什么建议?
我有一些由另一个系统生成的文本.它将一些单词组合在一起,我认为是某种文字包装副产品.所以像"狗"这样简单的东西就会组合成"狗".
我检查了ascii和unicode字符串,看看那里没有一些看不见的字符,但没有.一个令人困惑的问题是,这是医学文本,要检查的语料库不是可用的.因此,真正的例子是"...排除SARS与肺炎的试验"最终成为"......肺炎".
有人建议找到并分离这些吗?
我正在开发一个Django项目,除了标准的自动递增ID整数字段外,Thing将拥有一个唯一的10位密钥.我使用一个简单的随机数函数来创建它.[我确信有更好的方法可以做到这一点]
创建Thing时,会创建一个10位数的Key.我使用.validate_unique()来检查Key的唯一性.如果它不是唯一的,有没有一种简单的方法可以递归调用Key生成器(makeKey())直到它通过?代码如下:
Models.py:
class Thing(models.Model):
name=models.CharField(max_length=50)
key=models.IntegerField(unique=True)
Run Code Online (Sandbox Code Playgroud)
Views.py:
def makeKey():
key=''
while len(key)<10:
n=random.randint(0,9)
key+=`n`
k=int(key)
#k=1234567890 #for testing uniqueness
return k
def createThing(request):
if ( request.method == 'POST' ):
f = ThingForm(request.POST)
try:
f.is_valid()
newF=f.save(commit=False)
newF.key=makeKey()
newF.validate_unique(exclude=None)
newF.save()
return HttpResponseRedirect(redirect)
except Exception, error:
print "Failed in register", error
else:
f = ThingForm()
return render_to_response('thing_form.html', {'f': f})
Run Code Online (Sandbox Code Playgroud)
谢谢
我在这里发表了这篇文章,并整理了如何将一个模型的ForeignKey设置为另一个应用程序中的模型.但是,当我第二次尝试时,我得到一个错误,不知道为什么.
我的中央应用程序包含"项目"和"注释"的模型,以及带有报告模型的报告应用程序."注释"在"报告"应用中的"报告"中有一个FK,这似乎可以正常使用此代码:
#models.py for Central app
from GIanno.pt_reports.models import Report
class annotation(models.Model):
...
report=models.ForeignKey(Report)
Run Code Online (Sandbox Code Playgroud)
但是,在Reports应用程序中,当我尝试使用与上面相同的格式为"报告"设置FK以将其链接到"中心"应用程序中的"项目"时,我收到错误"无法导入名称"项目'从进口线.
关于它为什么单向而不是另一种方式工作的任何想法.订单有点重要吗?谢谢
django ×5
email ×1
field ×1
forms ×1
many-to-many ×1
model ×1
nlp ×1
regex ×1
registration ×1
unique ×1
validation ×1