GVKun编程网logo

如何以编程方式获取Django模型字段的max_length?(django获取model所有字段)

11

如果您对如何以编程方式获取Django模型字段的max_length?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于如何以编程方式获取Django模型字段的max_leng

如果您对如何以编程方式获取Django模型字段的max_length?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于如何以编程方式获取Django模型字段的max_length?的详细内容,我们还将为您解答django获取model所有字段的相关问题,并且为您提供关于android – 如何以编程方式获取Gradle模块名称、c# – 如何以编程方式获取内容?、Django模型字段如何工作?、Django模型字段的默认值可以由依赖于外部父模型的函数定义吗?的有价值信息。

本文目录一览:

如何以编程方式获取Django模型字段的max_length?(django获取model所有字段)

如何以编程方式获取Django模型字段的max_length?(django获取model所有字段)

假设我有一个类似Django的类:

class Person(models.Model):    name = models.CharField(max_length=50)    # ...

如何以编程方式获取max_lengthname字段的值?

答案1

小编典典

Person._meta.get_field(''name'').max_length会给你这个价值。
但是必须使用_meta表明这是正常使用中不应该做的事情。

编辑:正如卡尔指出的那样,这种命名具有误导性,并且使用它似乎确实可以接受:http : //www.b-list.org/weblog/2007/nov/04/working-
models/

android – 如何以编程方式获取Gradle模块名称

android – 如何以编程方式获取Gradle模块名称

是否可以在 Java代码中以编程方式获取Gradle的模块名称?

我需要它来访问MODULE_NAME / build / intermediates目录下的模块构建文件,但硬编码模块名称是个坏主意.

解决方法

要获取当前的模块名称,您只需访问Gradle的项目对象即可

project.name

将返回,为模块应用程序

app

见:https://docs.gradle.org/current/userguide/writing_build_scripts.html

c# – 如何以编程方式获取内容?

c# – 如何以编程方式获取内容?

我正在尝试编写一种方法,该方法将为特定占位符中存在的任何渲染输出内容(即 HTML).目标是传入一个Sitecore.Data.Items.Item和我感兴趣的占位符键,该方法应该返回渲染的内容.

这个问题似乎是没有页面上下文建立,因此调用RenderControl()在Sublayout的GetCacheKey()方法中抛出一个空引用错误.

有人意识到以编程方式渲染Sublayout或XSLT渲染的方法吗?

这是我到目前为止

private string GetPlaceholderContent(Item item,string placeHolder)
{
    StringWriter sw = new StringWriter();
    using (HtmlTextWriter writer = new HtmlTextWriter(sw))
    {
        foreach (RenderingReference renderingReference in item.Visualization.GetRenderings(Sitecore.Context.Device,false))
        {
            if (renderingReference.Placeholder == placeHolder)
            {
                // This ensures we're only dealing with Sublayouts
                if (renderingReference.RenderingItem.InnerItem.IsOfType(Sitecore.TemplateIDs.Sublayout))
                {
                    var control = renderingReference.GetControl();
                    control.RenderControl(writer); // Throws null reference error in GetCacheKey()
                }
            }
        }
    }

    return sw.ToString();
}

解决方法

在我看来,以编程方式渲染Sublayout的最好方法是使用中继器,并将< sc:Sublayout> < ItemTemplate&gt 从那里你只需要执行以下一项或两项:
>设置< sc:Sublayout>的DataSource属性作为所需项目的GUID的字符串表示(即子布局的数据源,如果有的话)
>设置< sc:Sublayout>的Path属性作为要渲染的Sublayout的路径.

服务器/ sitecore将处理其余的.

Django模型字段如何工作?

Django模型字段如何工作?

首先,我不喜欢网络编程。我碰到了django,并阅读了一些有关模型的信息。以下代码(djangoproject.com)吸引了我:

class Person(models.Model):    first_name = models.CharField(max_length=50)    last_name = models.CharField(max_length=50)    def __str__(self):        # Note use of django.utils.encoding.smart_str() here because        # first_name and last_name will be unicode strings.        return smart_str(''%s %s'' % (self.first_name, self.last_name))

据我对python的理解,first_name和last_name是类变量,对吗?它在代码中如何使用(因为我猜设置Person.first_name或Person.last_name将影响所有Person实例)?为什么使用这种方式?

答案1

小编典典

是的,first_name和last_name是类变量。它们定义将在数据库表中创建的字段。有一个Person表,该表具有first_name和last_name列,因此此时将它们置于类级别是有意义的。

有关模型的更多信息,请参见:http :
//docs.djangoproject.com/en/dev/topics/db/models/

当涉及到在代码中访问Person的实例时,通常是通过Django的ORM来执行此操作,此时,它们实际上起着实例变量的作用。

有关模型实例的更多信息,请参见:http
:
//docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs

Django模型字段的默认值可以由依赖于外部父模型的函数定义吗?

Django模型字段的默认值可以由依赖于外部父模型的函数定义吗?

我正在尝试Report根据上级模型的属性设置费用的默认值。我不想在中执行此操作save(),因为如果用户选择在保存之前覆盖该值,则需要将该字段呈现给用户。

除了仅传递函数指针(即,不带())之外,这是我尝试过的三种方法。运行时出现错误python manage.py shell

#1from django.db import modelsclass Job(models.Model):    veryImportant = models.IntegerField()    def get_fee(self):        return 2 * self.veryImportantclass Report(models.Model):    job = models.ForeignKey(Job)    overridableFee = models.DecimalField(default=job.get_fee(), max_digits=7, decimal_places=2)#gives...#AttributeError: ''ForeignKey'' object has no attribute ''get_fee''#2from django.db import modelsclass Job(models.Model):    veryImportant = models.IntegerField()class Report(models.Model):    job = models.ForeignKey(Job)    overridableFee = models.DecimalField(default=self.set_fee(), max_digits=7, decimal_places=2)    def set_fee(self):        overridableFee =  2 * self.job.veryImportant#gives...#NameError: name ''self'' is not defined#3from django.db import modelsclass Job(models.Model):    veryImportant = models.IntegerField()    def get_fee():        return 2 * veryImportantclass Report(models.Model):    job = models.ForeignKey(Job)    overridableFee = models.DecimalField(max_digits=7, decimal_places=2)    def __init__(self, *args, **kwargs):        self.overridableFee = self.job.get_fee()        super(models.Model, self).__init__(*args, **kwargs)#gives...#TypeError: object.__init__() takes no parameters

#3的错误可能是我不知道如何正确覆盖 init 。我从另一个答案中复制了一些内容,但在无效后放弃了。

如果这些都不起作用,我总是可以恢复为仅在视图中创建每个报表后设置费用,但是出于理智的考虑,我宁愿在创建报表时自动进行设置。

编辑:

最终以#3进行,用Yuji的答案进行了固定,并进行了修改,以确保从Shell设置的任何可能的费用都可以覆盖job.get_fee()想要的费用。

def __init__(self, *args, **kwargs):    super(Report, self).__init__(*args, **kwargs)    if self.overridableFee == None and self.job and not self.pk:        self.overridableFee = self.job.get_fee()

答案1

小编典典

您的最后一个示例可能适用于某些工作:

  1. 首先,您需要__init__上课,而不是models.Model
  2. 您需要在模型初始化 设置属性
  3. 您需要检查模型是否已保存,否则,每次加载模型时,模型都会还原为可覆盖的费用。

--

class Job(models.Model):    veryImportant = models.IntegerField()    def get_fee():        return 2 * veryImportantclass Report(models.Model):    job = models.ForeignKey(Job)    overridableFee = models.DecimalField(max_digits=7, decimal_places=2)    def __init__(self, *args, **kwargs):        super(Report, self).__init__(*args, **kwargs)        if not self.id:            self.overridableFee = self.job.get_fee()

今天的关于如何以编程方式获取Django模型字段的max_length?django获取model所有字段的分享已经结束,谢谢您的关注,如果想了解更多关于android – 如何以编程方式获取Gradle模块名称、c# – 如何以编程方式获取内容?、Django模型字段如何工作?、Django模型字段的默认值可以由依赖于外部父模型的函数定义吗?的相关知识,请在本站进行查询。

本文标签: