Django 有一个管理面板,允许您编辑数据库中的记录,它是自动生成的。我的模型有一个 TextField 字段,我需要在页面中添加一个降价编辑器,并为此字段添加/编辑一个条目。
如何才能做到这一点?我只看到了完全改变整个页面的选项,但我想有点血腥
PS如何在我的情况下添加降价编辑器 - 添加到页面
Django 有一个管理面板,允许您编辑数据库中的记录,它是自动生成的。我的模型有一个 TextField 字段,我需要在页面中添加一个降价编辑器,并为此字段添加/编辑一个条目。
如何才能做到这一点?我只看到了完全改变整个页面的选项,但我想有点血腥
PS如何在我的情况下添加降价编辑器 - 添加到页面
我需要它my actions IssuesNumberChange不显示为object (....) а, as IssuesNumberChange.publications。我怎样才能做到这一点?
models.py:
class IssuesNumberChange(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
publication = models.ForeignKey(Publication, on_delete=models.CASCADE)
volume_of_implement = models.SmallIntegerField()
new_number_of_issues = models.SmallIntegerField()
class Meta:
verbose_name = "Issues Number Change"
verbose_name_plural = "Issues Number Changes"
admin.py:
@admin.register(models.IssuesNumberChange)
class IssuesNumberChangeAdmin(admin.ModelAdmin):
list_display = ['publication', 'volume_of_implement', 'new_number_of_issues']
код от модели Publication:
class Publication(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=500)
acronym = models.CharField(max_length=31, unique=True)
publication_type = models.SmallIntegerField(
choices=choices.PUBLICATION_TYPE_CHOICES,
default=0,
)
email = models.EmailField(null=True, blank=True)
repec_institution_handle = models.CharField(max_length=255, null=True, blank=True)
repec_series_handle = models.CharField(max_length=255, null=True, blank=True)
repec_series_provider_name = models.CharField(max_length=255, null=True, blank=True)
next_submission_number = models.SmallIntegerField(null=True, blank=True)
# TODO: Ask about this, looks like NGINX proxy is required
# public_url = models.CharField(max_length=255, null=True, blank=True)
issn = models.CharField(max_length=32, null=True, blank=True)
number = models.CharField(
max_length=32,
null=True,
blank=True,
verbose_name="The number assigned to this journal",
)
starting_volume = models.SmallIntegerField(null=True, blank=True)
allow_supplemental = models.BooleanField(default=True)
active = models.BooleanField(default=True) # changed to true because of the publication posted inactive
referee_guidelines = models.FileField(upload_to="%Y/%m/%d/")
associate_editor_guidelines = models.FileField(upload_to="%Y/%m/%d/")
reviewing_editor_guidelines = models.FileField(upload_to="%Y/%m/%d/")
final_draft_guidelines = models.FileField(upload_to="%Y/%m/%d/")
mission_statement = models.FileField(upload_to="%Y/%m/%d/")
# TODO: WYSIWYG
submission_instructions = models.TextField(null=True, blank=True)
# TODO: WYSIWYG
copyright = models.TextField(null=True, blank=True)
# TODO: WYSIWYG
supplemental_policy = models.TextField(null=True, blank=True)
def __str__(self):
return str(self.name)
class Meta:
verbose_name = "Publication"
verbose_name_plural = "Publications"
def _add_default_jel_categories(self):
count = 0
for category in choices.JEL_DEFAULT_CHOICES:
JELCategory.objects.create(
publication=self,
key=choices.JEL_KEY_CHOICES[count][0],
label=str(category[1]),
)
count += 1
def _create_default_settings(self):
EmailSettings.objects.create(publication=self)
DisplaySettings.objects.create(publication=self)
def save(self, *args, **kwargs):
super(Publication, self).save(*args, **kwargs)
try:
self.displaysettings
except AttributeError:
self._add_default_jel_categories()
self._create_default_settings()
@property
def webmaster(self):
return self.actor_set.filter(role__role_type=0).first()
@property
def roles(self):
return self.role_set.exclude(role_type=0)
@property
def latest_volume(self):
return self.volume_set.latest("number")
def set_starting_volume(self, num):
self.starting_volume = num
def get_publication_type(self):
return choices.PUBLICATION_TYPE_CHOICES[self.publication_type][1]
get_publication_type.short_description = "Type"
我的问题是我想通过网站上的表格更新用户的个人资料照片。成功提交表单后,我的代码不显示错误,并且头像保存到 /media/avatars/。但同时,当更新个人资料页面或进入管理面板中的用户个人资料时,头像并没有改变,之前的头像被保存了。通过管理面板更改头像本身也很有效。我将非常感谢任何提示。以前,将头像分配给特定用户时会出现问题,但是这行代码:instance=request.user 帮助了我。例如,其中可能存在问题吗?
模型.py:
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Kind(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
avatar = models.ImageField(null=True, blank=True, upload_to="avatars/", verbose_name='Изображение')
kind = models.CharField(max_length=1, verbose_name='Пол')
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Kind.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
表格.py:
from .models import Kind
from django.forms import ModelForm
class BookForm(ModelForm):
class Meta:
model = Kind
fields = ['avatar']
视图.py:
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect
from django.core.files.storage import FileSystemStorage
from Вход.forms import *
from .models import *
def profilee(request):
if not request.user.is_authenticated:
return redirect("/accounts/login")
else:
if request.method == 'POST':
form = BookForm(request.POST, request.FILES, instance=request.user)
if form.is_valid():
form.save()
else:
form = BookForm()
return render(request, 'registration/profile.html', {'form' : form})
def LogoutView(request):
return redirect("/accounts/login")
模板:
<div>
{% if not user.profile.avatar %}
{% if user.profile.kind == "М" %}
<div class="block">
<img src="{% static 'image/m.png' %}" class="img-lg rounded-circle mb-4 imagero round" alt="image">
</div>
{% endif %}
{% if user.profile.kind == "Ж" %}
<div class="block">
<img src="{% static 'image/j.png' %}" class="img-lg rounded-circle mb-4 imagero round" alt="image">
</div>
{% endif %}
{% endif %}
{% if user.profile.avatar %}
<img src="{{ user.profile.avatar.url }}" class="img-lg rounded-circle mb-4 imagero round" alt="image">
{% endif %}
<form method = "post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Upload</button>
</form>
<h4>{% if user.first_name %}{{ user.first_name }}{% endif %} {% if user.last_name %}{{
user.last_name }}{% endif %}</h4>
<p class="text-muted mb-0">Social Activist</p>
</div>