小编beg*_*ain的帖子

显示 __str__ 以外的字段

我试图从下面的模型中显示版本字段,而不是默认的str是 field2_name:

注意:这个 SO 链接Displaying a specific field in a django form可能比我需要的更多,但我不是 100% 确定。我试图实现这一点,但没有成功。

另请注意,我在https://docs.djangoproject.com/en/1.10/ref/forms/fields/尝试了示例,但无法使其正常工作

型号(通用名称):

class CodeVersion(models.Model):
field1= models.ForeignKey(SomeOtherModel, on_delete=models.CASCADE)
field2_name = models.CharField(max_length=256)
field3_description = models.CharField(max_length=1000, blank=True)
version = models.PositiveIntegerField()

def __str__(self):
  return self.field2_name
Run Code Online (Sandbox Code Playgroud)

形式:

class VersionsForm(forms.Form):

code_versions = forms.ModelChoiceField(queryset=CodeVersion.objects.none())

def __init__(self, SomeOtherModel_id):
   super(VersionsForm, self).__init__()
   self.fields['infocode_versions'].queryset = CodeVersion.objects.filter(SomeOtherModel_id=SomeOtherModel_id)
Run Code Online (Sandbox Code Playgroud)

这有效 - 它按预期返回 field2_name 。

我该如何返回版本 - 最简单的方法是什么?

任何帮助或指导表示赞赏。

django django-forms modelchoicefield

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

如何在给定一定规则的情况下将字符串中的特定字母大写

我正在调整字符串,以便字符串的第一个字母以及破折号或斜杠后面的第一个字母需要大写。

所以下面的字符串:

test/string - 这是一个测试字符串

应该看起来像这样:

测试/字符串 - 这是一个测试字符串

因此,在尝试解决这个问题时,我的第一个想法似乎是一个坏主意 - 迭代字符串并检查每个字符并使用索引等。确定字符是否跟在破折号或斜杠后面,如果它确实将其设置为大写并写出到我的新字符串。

def correct_sentence_case(test_phrase):

corrected_test_phrase = ''

firstLetter = True

for char in test_phrase:

    if firstLetter:

        corrected_test_phrase += char.upper()

        firstLetter = False

    #elif char == '/':
    else:

        corrected_test_phrase += char
Run Code Online (Sandbox Code Playgroud)

这看起来非常不Pythonic。处理这个问题的Pythonic方法是什么?

类似于以下内容的东西会很棒,但我不能同时传递破折号和斜线来进行分割:

corrected_test_phrase = ' - '.join(i.capitalize() for i in test_phrase.split(' - '))
Run Code Online (Sandbox Code Playgroud)

我从这个SO得到的:

在Python中将大写字符串转换为句子大小写

任何帮助将不胜感激 :)

python string

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

标签 统计

django ×1

django-forms ×1

modelchoicefield ×1

python ×1

string ×1