В ожидании лучших решений я решил это следующим образом:
class MyModel(models.Model):
def _is_something(self):
if self.something == 'something':
return True
return False
_is_something.boolean = True
is_something = property(_is_something)
Затем я буду ссылаться на метод _is_something
в подклассе ModelAdmin
:
class MyModelAdmin(admin.ModelAdmin):
list_display = ['_is_something']
И свойство is_something
в противном случае:
if my_model_instance.is_something:
print("I'm something")
Примерно так:
Color color = Color.Red;
string colorString = string.Format("#{0:X2}{1:X2}{2:X2}",
color.R, color.G, color.B);
Выполнить другой способ немного сложнее, поскольку # F00 - допустимый цвет HTML (что означает полный красный), но это все еще можно выполнить с помощью регулярного выражения, вот небольшой пример класса:
using System;
using System.Diagnostics;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Collections.Generic;
public static class HtmlColors
{
public static string ToHtmlHexadecimal(this Color color)
{
return string.Format("#{0:X2}{1:X2}{2:X2}", color.R, color.G, color.B);
}
static Regex htmlColorRegex = new Regex(
@"^#((?'R'[0-9a-f]{2})(?'G'[0-9a-f]{2})(?'B'[0-9a-f]{2}))"
+ @"|((?'R'[0-9a-f])(?'G'[0-9a-f])(?'B'[0-9a-f]))$",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
public static Color FromHtmlHexadecimal(string colorString)
{
if (colorString == null)
{
throw new ArgumentNullException("colorString");
}
var match = htmlColorRegex.Match(colorString);
if (!match.Success)
{
var msg = "The string \"{0}\" doesn't represent"
msg += "a valid HTML hexadecimal color";
msg = string.Format(msg, colorString);
throw new ArgumentException(msg,
"colorString");
}
return Color.FromArgb(
ColorComponentToValue(match.Groups["R"].Value),
ColorComponentToValue(match.Groups["G"].Value),
ColorComponentToValue(match.Groups["B"].Value));
}
static int ColorComponentToValue(string component)
{
Debug.Assert(component != null);
Debug.Assert(component.Length > 0);
Debug.Assert(component.Length <= 2);
if (component.Length == 1)
{
component += component;
}
return int.Parse(component,
System.Globalization.NumberStyles.HexNumber);
}
}
Использование:
// Display #FF0000
Console.WriteLine(Color.Red.ToHtmlHexadecimal());
// Display #00FF00
Console.WriteLine(HtmlColors.FromHtmlHexadecimal("#0F0").ToHtmlHexadecimal());
// Display #FAF0FE
Console.WriteLine(HtmlColors.FromHtmlHexadecimal("#FAF0FE").ToHtmlHexadecimal());
«Белый» - допустимый цвет HTML. См. ColorTranslator.ToHtml
:
Этот метод переводит Color структура в строковое представление цвета HTML. Это обычно используемое название цвета, например "Красный", «Синий» или «Зеленый», а не нить представление числового цвета значение, такое как «FF33AA».
Если ваш цвет не может быть сопоставлен с цветовой строкой HTML, этот метод вернет действительный шестнадцатеричный код для цвета. См. Этот пример:
using System;
using System.Drawing;
class Program
{
static void Main()
{
Console.WriteLine(ColorTranslator.ToHtml(Color.White));
Console.WriteLine(ColorTranslator.ToHtml(Color.FromArgb(32,67,89)));
}
}
Посмотрите в Color.ToARGB ()
http://msdn.microsoft.com /en-us/library/system.drawing.color.toargb.aspx