标签: django-modeladmin

Django - ModelAdmin媒体定义

我试图将一些CSS和JS文件包含在文档中指定的对象的更改形式中.这是我的文件:

admin.py

#...
class ScribPartAdmin(admin.ModelAdmin):
  class Media:
    css = {
      'all': ('mymarkup.css',)
    }
    js = ('mymarkup.js',)

admin.site.register(ScribPart, ScribPartAdmin)
#...
Run Code Online (Sandbox Code Playgroud)

models.py

class ScribPart(models.Model):
  part = models.IntegerField()
  sequence = models.IntegerField()
  file = models.FileField(upload_to='audio/')
  text = models.TextField()
#...
Run Code Online (Sandbox Code Playgroud)

我的2个媒体文件包含在change_list模板中,但不包含在模板中change_form.

问题是:为什么?

python media django django-modeladmin

3
推荐指数
1
解决办法
2806
查看次数

如何在Django管理员中显示没有任何值的值?

当没有值时,是否有一种在管理中显示默认值的djangtastic方法?像'不适用',但不是要保存到数据库?

当我将下面模型中的所有字段设置为只在管理员中读取时,前端显示看起来像底部的图像.它看起来像是应该有一个价值或一个盒子或东西.如果没有一种简单的方法来完成我正在寻找的东西,那么还有另一种解决方案可以让前端管理员更清楚地为用户服务吗?

class Package(models.Model):
    packaging_format = models.CharField(max_length=40)
    package_delivery_pattern = models.CharField(max_length=30, blank=True)
    package_delivery_comments = models.CharField(max_length=250, blank=True)
    package_manifest_filename = models.CharField(max_length=50)
    package_description = models.CharField(max_length=250, blank=True)
    package_naming_pattern = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)

显示管理员的字段截图: 带有readonly包字段的admin的屏幕截图

django django-models django-admin django-modeladmin

3
推荐指数
1
解决办法
2046
查看次数

在Django admin的search_fields中正确使用外键引用

我有一个奇怪的难题,我需要在virtual-env中使用python 3.4在Django 1.8.4中获得一些帮助。

我在2个不同的应用程序中有2个模型...如下,其中包含多个外键引用。

库存应用

class InventoryItem(models.Model):
    item_unique_code = models.CharField(max_length=256, blank=False, null=False)
    category = models.CharField(max_length=256, blank=False, null=False,choices=[('RAW','Raw Material'),('FG','Finished Good'),('PKG','Packaging')])
    name = models.CharField(max_length=64, blank=False, null=False)
    supplier = models.CharField(max_length=96, blank=False,null=False)
    approved_by = models.CharField(max_length=64, editable=False)
    date_approved = models.DateTimeField(auto_now_add=True, editable=False)
    comments = models.TextField(blank=True, null=True)

    def __str__(self):
        return "%s | %s | %s" % (self.item_unique_code,self.name,self.supplier)

    class Meta:
        managed = True
        unique_together = (('item_unique_code', 'category', 'name', 'supplier'),)
Run Code Online (Sandbox Code Playgroud)

食谱应用

class RecipeControl(models.Model):
    #recipe_name choice field needs to be a query set of all records containing "FG-Finished Goods"
    recipe_name …
Run Code Online (Sandbox Code Playgroud)

django django-admin django-modeladmin django-admin-tools

3
推荐指数
1
解决办法
4040
查看次数

如何在django admin中显示带有相关对象计数的list_filter?

如何在django admin的list_filter中的每个过滤器之后显示相关对象的计数?

class Application(TimeStampModel):

    name = models.CharField(verbose_name='CI Name', max_length=100, unique=True)
    description = models.TextField(blank=True, help_text="Business application")

class Server(TimeStampModel):
    name = models.CharField(max_length=100, verbose_name='Server Name', unique=True)
    company = models.CharField(max_length=3, choices=constants.COMPANIES.items())
    online = models.BooleanField(default=True, blank=True, verbose_name='OnLine')
    application_members = models.ManyToManyField('Application',through='Rolemembership',
            through_fields = ('server', 'application'),
            )


class Rolemembership(TimeStampModel):

    server = models.ForeignKey(Server, on_delete = models.CASCADE)
    application = models.ForeignKey(Application, on_delete = models.CASCADE)
    name = models.CharField(verbose_name='Server Role', max_length=50, choices=constants.SERVER_ROLE.items())
    roleversion = models.CharField(max_length=100, verbose_name='Version', blank=True)
Run Code Online (Sandbox Code Playgroud)

管理员

@admin.register(Server)
class ServerAdmin(admin.ModelAdmin):

    save_on_top = True
    list_per_page = 30
    list_max_show_all = 500
    inlines = …
Run Code Online (Sandbox Code Playgroud)

django-admin django-modeladmin

3
推荐指数
1
解决办法
843
查看次数

Django admin:在search_fields中使用一对一的关系

我正在尝试使用以下Model和ModelAdmin类将搜索添加到我的模型管理列表页面:

models.py

from django.contrib.auth.models import User

class UserProfile(models.Model):
        user = models.OneToOneField(User)
        country = CountryField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

admin.py

from django.contrib import admin
from models import UserProfile

class UserProfileAdmin(admin.ModelAdmin):
        list_display = ('user','country')
        search_fields = ['user']
Run Code Online (Sandbox Code Playgroud)

但是在尝试访问管理面板中的UserProfile时出现以下错误:

 at /admin/profiles/userprofile/ Related Field has invalid
 lookup: icontains
Run Code Online (Sandbox Code Playgroud)

我也尝试过以下方法:

search_fields = ['user_username']
Run Code Online (Sandbox Code Playgroud)

search_fields = ['user_name']
    def user_name(self,obj):
        return obj.user.username
Run Code Online (Sandbox Code Playgroud)

有解决方案吗

django django-admin django-modeladmin

2
推荐指数
1
解决办法
2870
查看次数

如何在models.py中的save方法中获取内联对象

我有类Invoice,其中(简化)具有以下属性:

class Invoice(models.Model)
    number = models.CharField(verbose_name="Number", max_length=16)
    issue_date = models.DateTimeField(verbose_name="Issue date", default=datetime.now)
    total = models.FloatField(verbose_name="Total", blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

然后,我有InvoiceLine类,它代表发票可以拥有的行/行:

class InvoiceLine(models.Model):
    invoice = models.ForeignKey(Invoice, verbose_name="Invoice")
    description = models.CharField(verbose_name="Description", max_length=64)
    line_total = models.FloatField(verbose_name="Line total")
Run Code Online (Sandbox Code Playgroud)

InvoiceLine是Invoice的内联,我想要实现的是,当在管理员中有人用发票线(一个或多个)保存发票时,计算发票总额.我试图通过覆盖方法保存来做到这一点:

class Invoice(models.Model)
    number = models.CharField(verbose_name="Number", max_length=16)
    issue_date = models.DateTimeField(verbose_name="Issue date", default=datetime.now)
    total = models.FloatField(verbose_name="Total", blank=True, null=True)

    def save(self, *args, **kwargs):
         invoice_lines = InvoiceLine.objects.filter(invoice=self.id)
         self.total = 0
         for line in invoice_lines:
             self.total=self.total+line.line_total
         super(Invoice, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

问题是,当我在InvoiceLine中添加元素时,第一次保存并调用functionsave时,内联(InvoiceLine)中的新元素尚未存储,所以当我这样做时InvoiceLine.objects.filter(invoice=self.id),它们不会被考虑在内.因此,这种方法的唯一方法是节省两次.我也尝试过:

def save(self, *args, **kwargs):
    super(Invoice, self).save(*args, **kwargs)
    invoice_lines = InvoiceLine.objects.filter(invoice=self.pk) …
Run Code Online (Sandbox Code Playgroud)

django django-models django-admin django-modeladmin django-admin-actions

2
推荐指数
1
解决办法
2181
查看次数

如何在tabularinline块的每一行中添加行号

我有一个ModelAdmin类,其内联类型为TabularInline。我想为TabularInline的每一行在其左侧显示一个行号。当新记录添加到内联时,该数字将增加,并且在编辑表单时将显示该数字。

我更喜欢行号不是内联数据模型的一部分,而应该在每次向内联块添加或显示新记录时生成。我不需要将此号码保留在数据库中。仅在ModelAdmin类的另一个字段上提供参考。

我是django的新手,我似乎无法弄清楚如何实现这一目标。

任何建议,将不胜感激。

问候,里克

django django-modeladmin django-1.6

1
推荐指数
1
解决办法
742
查看次数