我无法在任何地方找到它,所以你的帮助对我来说很好:)这是这个领域:
categories = models.ManyToManyField(fragmentCategory)
Run Code Online (Sandbox Code Playgroud)
FragmentCategory:
class fragmentCategory(models.Model):
CATEGORY_CHOICES = (
('val1', 'value1'),
('val2', 'value2'),
('val3', 'value3'),
)
name = models.CharField(max_length=20, choices=CATEGORY_CHOICES)
Run Code Online (Sandbox Code Playgroud)
这是要发送的表单:
<input type="checkbox" name="val1" />
<input type="checkbox" name="val2" />
<input type="checkbox" name="val3" />
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情:
categories = fragmentCategory.objects.get(id=1),
Run Code Online (Sandbox Code Playgroud)
要么:
categories = [1,2]
Run Code Online (Sandbox Code Playgroud) 我的一个模型有一个删除标志,用于全局隐藏对象:
class NondeletedManager(models.Manager):
"""Returns only objects which haven't been deleted"""
def get_query_set(self):
return super(NondeletedManager, self).get_query_set().exclude(deleted=True)
class Conversation(BaseModel):
...
deleted = models.BooleanField(default=False)
objects = NondeletedManager()
all_conversations = models.Manager() # includes deleted conversations
Run Code Online (Sandbox Code Playgroud)
如何覆盖Django管理模块使用的默认查询集以包含已删除的对话?
我想在模板中调用我的模型中的函数,例如:
class ChannelStatus(models.Model):
..............................
..............................
def get_related_deltas(self,epk):
mystring = ""
if not self.get_error_code_delta(epk):
return mystring
else:
for i in self.get_listof_outage():
item = i.error_code.all()
for x in item:
if epk == x.id:
mystring= mystring +" "+str(i.delta())
return mystring
Run Code Online (Sandbox Code Playgroud)
当我想从模板中调用它时:假设在渲染时,我将channel_status_list作为
channel_status_list = ChannelStatus.objects.all()
{% for i in channel_status_list %}
{{ i.get_related_deltas(3) }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
这不起作用,我可以调用一个不消耗任何东西的函数,但是如果它有参数则无法找到该怎么做
干杯
我在这里遇到了范式问题.我不知道是否应该将钱存储为Decimal(),或者我是否应该将其存储为字符串并将其自身转换为小数.我的理由是这样的:
PayPal需要2个小数位,所以如果我有一个49美元的产品,PayPal希望看到49.00遇到问题.Django的DecimalField()不设置小数.它只存储最大小数位数.所以,如果你有49个,并且你将字段设置为2个小数位,它仍然将它存储为49.我知道Django基本上是类型转换,当它从数据库反序列化为Decimal时(因为数据库)没有十进制字段),所以我并不完全关心速度问题,就像我遇到这个问题的设计问题一样.我想做可扩展性最好的事情.
或者,更好的是,是否有人知道如何配置django DecimalField()以始终使用TWO_PLACES格式样式进行格式化.
我有这些模型:
def Foo(Models.model):
size = models.IntegerField()
# other fields
def is_active(self):
if check_condition:
return True
else:
return False
def Bar(Models.model):
foo = models.ForeignKey("Foo")
# other fields
Run Code Online (Sandbox Code Playgroud)
现在我想要查询具有活动Foo的条形码:
Bar.objects.filter(foo.is_active())
Run Code Online (Sandbox Code Playgroud)
我收到的错误如
SyntaxError at /
('non-keyword arg after keyword arg'
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
假设我的models.py中有类似的东西:
class Hipster(models.Model):
name = CharField(max_length=50)
class Party(models.Model):
organiser = models.ForeignKey()
participants = models.ManyToManyField(Profile, related_name="participants")
Run Code Online (Sandbox Code Playgroud)
现在在我的views.py中,我想做一个查询,它将为有超过0个参与者的用户取一个派对.
这样的事情可能是:
user = Hipster.get(pk=1)
hip_parties = Party.objects.filter(organiser=user, len(participants) > 0)
Run Code Online (Sandbox Code Playgroud)
这样做的最佳方式是什么?
我有一个Django应用程序,需要一个settings以下形式的属性:
RELATED_MODELS = ('appname1.modelname1.attribute1',
'appname1.modelname2.attribute2',
'appname2.modelname3.attribute3', ...)
Run Code Online (Sandbox Code Playgroud)
然后挂钩他们的post_save信号,根据attributeN定义更新一些其他固定模型.
我想测试这种行为,测试应该工作,即使这个应用程序是项目中唯一的一个(除了它自己的依赖项,不需要安装其他包装应用程序).如何为测试数据库创建和附加/注册/激活模拟模型?(或者它可能吗?)
允许我使用测试夹具的解决方案会很棒.
我需要contrib.auth通过确保电子邮件字段条目是唯一的来修补标准用户模型:
User._meta.fields[4].unique = True
Run Code Online (Sandbox Code Playgroud)
代码中最好的位置在哪里?
我想避免使用数字字段[4].用户字段['email']更好,但字段不是字典,只是列表.
另一个想法可能是打开一个新票证并上传一个带有新参数的补丁settings.py:
AUTH_USER_EMAIL_UNIQUE = True
Run Code Online (Sandbox Code Playgroud)
有关在Django用户模型中实现电子邮件地址唯一性的最正确方法的任何建议吗?
假设我有一个像这样的Django类:
class Person(models.Model):
name = models.CharField(max_length=50)
# ...
Run Code Online (Sandbox Code Playgroud)
我如何以编程方式获得max_length该name字段的值?
我希望在我的模型中有一个固定长度的CharField.换句话说,我希望只有指定的长度才有效.
我试着做点什么
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误(似乎我可以同时使用max_length和min_length).
还有另一种快捷方式吗?
谢谢
编辑:
根据一些人的建议,我会更具体一些:
我的模型是这样的:
class Volume(models.Model):
vid = models.AutoField(primary_key=True)
jid = models.ForeignKey(Journals, db_column='jid', null=True, verbose_name = "Journal")
volumenumber = models.CharField('Volume Number')
date_publication = models.CharField('Date of Publication', max_length=6, blank=True)
class Meta:
db_table = u'volume'
verbose_name = "Volume"
ordering = ['jid', 'volumenumber']
unique_together = ('jid', 'volumenumber')
def __unicode__(self):
return (str(self.jid) + ' - ' + str(self.volumenumber))
Run Code Online (Sandbox Code Playgroud)
我想要的是volumenumber必须是4个字符.
IE如果有人插入'4b'django会出错,因为它需要一个4个字符的字符串.
所以我尝试了
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
Run Code Online (Sandbox Code Playgroud)
但它给了我这个错误:
Validating models...
Unhandled exception …Run Code Online (Sandbox Code Playgroud) django ×10
django-models ×10
python ×5
currency ×1
decimal ×1
django-admin ×1
django-orm ×1
mocking ×1
oop ×1
unit-testing ×1