У меня была эта проблема о сервере, который я развертывал на и решил, что мне не было нужно
Microsoft. CodeDom. Поставщики. DotNetCompilerPlatform
Так, я удалил его через самородок и удалил ссылку в веб-конфигурации. Больше никаких проблем.
я первоначально попробовал к добавленному целевому узлу в .proj файл, как упомянуто в некоторых из других ответов, но которые просто приводят к другой ошибке, где эти msbuild
не мог скопировать pagefile.sys
, который казался, из какого я читал, чтобы быть ошибкой в пакете самородка.
Я думаю, это происходит из-за того, что используется Meta.verbose_name, а NamedModel.name создается при анализе класса NamedModel. Так что позже, когда класс OwnedModel будет проанализирован, нет возможности что-либо изменить.
Возможно, вы можете позже установить свойство help_text для OwnedModel.name, но это также может изменить NamedModel.name.
В аналогичных ситуациях я поместили переменные части в атрибут класса модели (не в Meta), а затем использовали методы / свойства времени выполнения для создания нужных мне текстов.
На самом деле я сделал следующее. Базовая модель получает метод класса dynamic_field_definition (), который можно использовать для исправления полей, при этом аргумент cls является правильным (наследующим) классом. Это означает, что мета-атрибуты cls относятся к правильному дочернему элементу, а не к исходной базе.
Затем я подключаю этот метод к вызову по сигналу class_prepared, чтобы вы знали, что в остальном все готово.
class NamedModel(models.Model):
...
@classmethod
def dynamic_field_definition(cls):
pass
def dynamic_field_definition(sender, **kwargs):
if issubclass(sender, NamedModel):
sender.dynamic_field_definition()
class_prepared.connect(dynamic_field_definition)
Затем поле свойства, которые различаются в зависимости от класса модели, просто реконфигурируются этим методом класса (или, что более вероятно, метод переопределяется в производных классах).
Это немного хитрый способ привнести последний кусочек объектно-ориентированного подхода в модели Django, но он отлично работает для моей цели.