我想知道是否有可能以干净的方式在ModelAdmin中打印foreignkey链:
图像我们有这个结构:
class Ma(models.Model):
fa = models.EmailField()
class Mb(models.Model):
fb = models.ForeignKey('Ma')
class Mc(models.Model):
name = models.CharField(max_length=50)
fc = models.ForeignKey('Mb')
Run Code Online (Sandbox Code Playgroud)
现在使用ModelAdmin:
编辑:(这是无效的)
class McAdmin(admin.ModelAdmin):
list_display = ('name', 'fc__fb__fa',)
Run Code Online (Sandbox Code Playgroud)
或者我该如何解决这个问题?
当我尝试创建一个 ModelForm 时
MyModelForm(instance=a_model_instance_)
Run Code Online (Sandbox Code Playgroud)
似乎 Django 阻止了表单__init__方法中初始模型字段的任何设置,例如:
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
if self.instance.pk:
if self.instance.my_field:
my_field = self.instance.my_field
else:
# show parent's field instead
my_field = self.instance.parent.my_field
self.fields['my_field'].initial = my_field
Run Code Online (Sandbox Code Playgroud)
__init__一旦表单绑定到实例,是否有任何理由为什么在表单的方法中初始化字段不再起作用?
我想知道到底是./manage.py syncdb --all做什么的?我最近有一个数据库问题,我可以通过运行此命令来解决,但我不确定它在幕后做了什么.据我所知,syncdb为未安装南方的已安装应用程序创建表格,除非指定了--all选项但是我对实际发生的事情和何时使用感到困惑,因此忽略了南迁移控制下的表格它.我无法在django-admin文档中找到关于该选项的任何内容,并且手册页仅对该选项说了这个.
--all Makes syncdb work on all apps, even migrated ones. Be
careful!
Run Code Online (Sandbox Code Playgroud)
为什么我需要小心?这究竟是做什么的?是完全删除数据库并重新开始,我认为这会导致我丢失存储在数据库中的所有数据(对吗?),还是会发生其他事情?我正在使用Django 1.6,如果这有所作为.
如何使用 kwargs 或其他东西设置多个成功网址?
我想要,取决于点击不同的成功 URL 的按钮。
保存 = 转到 DetailView
save&continue = 留在这个升级视图
save&createNew = 转到 CreateView
它应该可以像在 Django 管理员中一样工作
我有这个更新视图:
class TopicEditView(UpdateView):
fields = ['title','description',]
model = Topic
def post(self, request, *args, **kwargs):
data = request.POST.copy()
if data.get('save', False):
pass
elif data.get('save_and_continue', False):
pass
...
return UpdateView.post(self, request, *args, **kwargs)
def get_success_url(self):
return reverse('topic_detail', kwargs={'pk':self.object.pk})
Run Code Online (Sandbox Code Playgroud)
还有这个简单的模板:
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Speichern" name="save"/>
<input type="submit" value="Speichern & weiter"
name="save_and_continue"/>
</form>
Run Code Online (Sandbox Code Playgroud) 我有一个输入标签,用户必须在其中上传文件。现在,如果用户没有上传任何内容,我会在主视图中执行此操作:
if len(request.FILES) != 0:
data = request.FILES['some_file']
...do some work...
else:
return render(request, 'App/nofile.html' )
Run Code Online (Sandbox Code Playgroud)
如果没有文件,则将用户带到另一个页面,在该页面上说没有文件上传,然后使他/她返回主页。
有没有一种方法可以检查用户是否没有上传文件并且没有转到其他页面,而只是在该页面的中间显示带有消息的图片?
不只是STRING消息,而是带有消息的图片。
也许javascript是答案,但我对javascript一无所知。
在此先感谢您的帮助。
我有一个用户列表和一个名为“group1”的身份验证组。这些用户是通过bulk_createDjango 中的方法创建的。现在我需要将所有这些用户添加到组“group1”。我可以使用 for 循环来实现这一点,例如:
group1 = Groups.objects.get(name='group1')
for user in users:
group1.user_set.add(user)
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有任何简单和更好的方法而不使用 for 循环。
在urls.pyDjango
#urls.py
url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic')
The second part of the expression, /(?P<topic_id>\d+)/, matches an integer between two forward slashes and stores the integer value in an argument called topic_id.
Run Code Online (Sandbox Code Playgroud)
我尝试用正则表达式来理解它
In [6]: re.findall(r'topics/(?P<topic_id>\d+)/$', "topics/1/")
Out[6]: ['1']
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试
In [7]: re.findall(r'topics/(?P<topic_id>\d+)/$', "topics/1/").topic_id
AttributeError: 'list' object has no attribute 'topic_id'
Run Code Online (Sandbox Code Playgroud)
似乎整数没有存储topic_id,如何理解呢?
为什么这个表格没有验证?它甚至没有调用该clean()方法.
forms.py:
class SingleSampleForm(forms.Form):
sample_id = forms.CharField(label='Sample ID:')
class Meta:
fields = ('sample_id',)
def __init__(self, *args, **kwargs):
super(SingleSampleForm, self).__init__()
self.helper = FormHelper()
self.helper.layout = Layout(
Field('sample_id',
css_class="search-form-label",),
Submit('submit', 'Search sample', css_class='upload-btn')
)
self.helper.form_method = 'POST'
def clean(self):
print('CLEAN')
sample_id = self.cleaned_data['sample_id']
if sample_id:
return sample_id
raise ValidationError('This field is required')
Run Code Online (Sandbox Code Playgroud)
views.py:
class SampleView(View):
sample_form = SingleSampleForm
def get(self, request, *args, **kwargs):
sample_form = self.sample_form()
self.context = {'sample_form': sample_form,}
return render(request,
'results/single_sample_search.html',
self.context)
def post(self, request, *args, **kwargs):
self.sample_form …Run Code Online (Sandbox Code Playgroud) 我有一个表单,我正在尝试使用该get_initial方法来设置外键。模型是
class CardioRecord(models.Model):
date_uploaded = models.DateField(auto_now=True)
client = models.ForeignKey(User, on_delete=models.CASCADE)
run_dist = models.FloatField(blank=True, null=True)
run_time = models.FloatField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
形式是
class CardioRecordForm(forms.ModelForm):
class Meta:
model = CardioRecord
fields = [
'client',
'run_dist',
'run_time',
]
labels = {
'run_dist': 'Distance (km)',
'run_time': 'Time (min)',
}
widgets = {
'client': forms.HiddenInput()
}
Run Code Online (Sandbox Code Playgroud)
视图是
class CardioCreateView(CreateView):
model = CardioRecord
form_class = CardioRecordForm
template_name = 'training/cardio_form.html'
def get_initial(self):
initial = super(CardioCreateView, self).get_initial()
initial['client'] = self.request.user.pk
return initial
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
null value in column "client_id" …Run Code Online (Sandbox Code Playgroud) python django django-models django-forms django-class-based-views
我正在将一个项目迁移到docker上的python,以便为开发提供更好的"设施".这是一个使用python 2.7,Django 1.6.8和几个RPC依赖项运行的项目
我发现自己发现了这个堆栈跟踪的应用程序崩溃,我找不到丢失的模块(没有名为coros的模块).
我认为它应该是与不好的版本相关的成瘾问题,或者是在默认骨骼上安装但不在docker骨骼上安装的成瘾问题.您有任何想法或建议来纠正这个问题吗?
我的Dockerfile
FROM python:2
WORKDIR /var/www
RUN echo "deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-stable/Debian_9.0/ ./" >> /etc/apt/sources.list
RUN wget https://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-stable/Debian_9.0/Release.key -O- | apt-key add
RUN apt-get update
RUN apt-get install libzmq3-dev libev-dev -y
RUN apt-get install -y bash \
git \
default-libmysqlclient-dev \
libldap2-dev \
libsasl2-dev \
libssl-dev \
python-gevent \
python-gevent-websocket \
build-essential \
python-dev \
locales
RUN pip install django-debug-toolbar==1.2.1
RUN apt-get install libevent-dev -y
RUN apt-get install python-all-dev -y
RUN pip install gevent …Run Code Online (Sandbox Code Playgroud) django ×10
python ×7
django-1.8 ×2
django-forms ×2
django-1.6 ×1
django-views ×1
forms ×1
modeladmin ×1
python-2.7 ×1
python-3.6 ×1
zeromq ×1