执行逻辑/软删除记录(即设置一个表明记录被删除的标志)而不是实际或物理删除记录的优点是什么?
这是常见做法吗?
这样安全吗?
null=Trueblank=Truedefault = 0有什么不同?你什么时候用的?
我正在使用Django REST Framework 2.0.
这是我的模型类:
class Mission(models.Model):
assigned_to = models.ForeignKey('auth.User',
related_name='missions_assigned',
blank = True)
Run Code Online (Sandbox Code Playgroud)
这是我的观点类:
class MissionList(generics.ListCreateAPIView):
model = Mission
serialize_class = MissionSerializer
Run Code Online (Sandbox Code Playgroud)
多部分表单在浏览器中呈现,assigned_to字段为空.
发布原始JSON时,我收到以下错误消息:
Cannot assign None: "Mission.assigned_to" does not allow null values.
我做了一个模型改变
standard = models.ManyToManyField(Standard)
Run Code Online (Sandbox Code Playgroud)
至
standard = models.ManyToManyField(Standard, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
此应用程序的南模式迁移无法识别更改?
类似于这个问题,这个问题没有得到解决: 南方迁移和许多可能领域的变化
django django-models database-schema django-south django-migrations
在django模型中定义字段时,有两种方法可以说该字段是空的. null表示它在数据库中可以为空,并blank表示该字段在表单中可以为空.为什么这些不同?每次我设置一个而不是另一个出错.允许它们不同似乎只是邀请表单的问题,允许您创建数据库不接受的对象.
换句话说,当你会永远使用null=True,blank=False或null=False,blank=True在Django模型?
在django中如何使表单字段可选?
我的模特,
class Student(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
Run Code Online (Sandbox Code Playgroud) 模型.py
class Form(models.Model):
no = models.IntegerField()
finish_date = models.DateField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
序列化程序.py
class FormSerializer(serializers.ModelSerializer):
class Meta:
model = Form
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
如果我尝试:
http http://127.0.0.1:8000/api/forms no=112 "finish_date"=""
Run Code Online (Sandbox Code Playgroud)
它返回错误:
"finish_date": [
"Date has wrong format. Use one of these formats instead: YYYY[-MM[-DD]]."
]
Run Code Online (Sandbox Code Playgroud)
如果我将 "finish_date" 设置为 null ,则这篇文章有效。并且StringField(blank=True, null=True)不会得到错误。
怎么解决?
我是Django的新用户,我正在试图弄清楚如何创建一个可以支持许多种(类型)元素的模型.
这是情节:我想在我的应用程序上创建一个Blog模块.要做到这一点,我创建了一个模型页,描述一个博客页面.还有一个模型PageElement,用于描述博客上的帖子.每个页面都可以包含许多PageElement.
一个PageElement可以有多种类型,因为我希望我的用户可以张贴像只是一个简短的文字,或只是一个视频,或只是一个画面.我也希望(例如)用户可以发布对另一个模型的引用(比如对用户的引用).根据用户发布的内容类型,HTML页面将以不同的方式显示每个PageElement.
但我不知道什么是声明PageElement类以支持所有这些情况的正确方法:(
这是我的页面模型:
class Page(models.Model):
uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
# Basical informations
title = models.CharField(max_length=150)
description = models.TextField(blank=True)
# Foreign links
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.SET_NULL,
null=True,
related_name='pages_as_user'
)
created_at = models.DateTimeField(default=timezone.now)
# Other fields ....
class Meta:
indexes = [
models.Index(fields=['uuid']),
models.Index(fields=['user', 'artist'])
]
Run Code Online (Sandbox Code Playgroud)
目前,我有两个解决方案,第一个使用继承:当您在博客上创建新帖子时,您创建一个继承自PageElement模型的Element.以下是我针对每种情况的不同模型:
class PageElement(models.Model):
page = models.ForeignKey(
Page,
on_delete=models.CASCADE,
related_name='%(class)s_elements'
)
updated_at = models.DateTimeField(default=timezone.now)
created_at = models.DateTimeField(default=timezone.now)
class PageImageElement(PageElement):
image = …Run Code Online (Sandbox Code Playgroud) 我在其中一种表单中添加了Many2Many字段,现在在提交时收到IntegrityError。确切的错误文本是
/add_person/hireterm_person.mail_lists的IntegrityError不能为NULL
在我添加新字段之前,它运行良好。当我查看有关调试更改的POST数据时,我看到它已通过,因此我不知道中断发生在哪里。
楷模
from django.db import models
from django.forms import ModelForm
from django import forms
from django.contrib.auth.models import User
class Mailists(models.Model):
name = models.CharField(blank=True, max_length=100)
email = models.CharField(blank=True, max_length=100)
def __unicode__(self):
return u'%s' % (self.name)
class Person(models.Model):
ROLE_CHOICES = (
('Mrkt', 'Marketing'),
('Fin/Off', 'Finance / Office'),
('Care', 'Care'),
('Sales', 'Sales'),
)
ROLE_TYPE = (
('Full', 'Full Time'),
('Part', 'Part Time'),
('Intern', 'Intern'),
)
first_name = models.CharField(blank=True, max_length=100)
last_name = models.CharField(blank=True, max_length=100)
date_added = models.DateField(auto_now_add=True)
date_start = models.DateField(auto_now=False)
role = …Run Code Online (Sandbox Code Playgroud) 来自:https : //docs.djangoproject.com/en/2.0/ref/models/fields/#django.db.models.Field.null
避免在基于字符串的字段(例如CharField和TextField)上使用null。如果基于字符串的字段具有null = True,则意味着它具有“无数据”的两个可能值:NULL和空字符串。在大多数情况下,为“无数据”使用两个可能的值是多余的; Django约定是使用空字符串,而不是NULL。
那么在ForeignKey领域上有什么更好的呢?ForeignKey字段不是基于字符串的字段,不是吗?
我想知道 what is convention for ForeignKey in django.
null =真是更好还是空白=真是更好?在性能,便利性或其他方面。
我正在向数据库添加一个字段:
identifier = models.UUIDField(unique=True, null=True, blank=True)
但我很好奇,当有人在管理员中保存没有值的实例时,这是否会表现得像 CharField 或数字字段。它会尝试将值保存为空字符串""还是会聪明地将其保存为null?我使用 Postgres 作为数据库。我看过CharField 的其他答案,但没有任何与 UUIDField 相关的答案。
我的最终目标是拥有一个保证唯一的字段,并且默认为null. 写成这样会不会更合适:
identifier = models.UUIDField(unique=True, null=True, default=None)或者如果没有提供值,管理表单验证会抱怨吗?
status = models.IntegerField(choices=list(CAMPAIGN_STATUS), default=CAMPAIGN_STATUS.PAUSE,
verbose_name=_("status"), blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
Blank=True, null=True 有什么区别?
django ×11
python ×4
database ×2
django-south ×1
foreign-keys ×1
integer ×1
oop ×1
soft-delete ×1
sql ×1
string ×1