Итак, я действительно пытался это понять, но кажется, что Django все еще не делает этого очень простым. Я не настолько глупый, но я просто не вижу какого-либо (несколько) простого решения.
Я считаю, что в целом довольно уродливо переопределять виды Admin для такого рода вещей, и каждый пример, который я нахожу никогда полностью не применимым к представлениям администратора.
Это такое распространенное обстоятельство с моделями, которые я делаю, что я нахожу это ужасным, что нет очевидного решения этого ...
У меня есть эти классы:
# models.py
class Company(models.Model):
# ...
class Contract(models.Model):
company = models.ForeignKey(Company)
locations = models.ManyToManyField('Location')
class Location(models.Model):
company = models.ForeignKey(Company)
Это создает проблему при настройке администратора для компании, поскольку у него есть встроенные параметры для контракта и местоположения, а параметры m2m для Контракта для местоположения не фильтруются должным образом в соответствии с компанией, которую вы сейчас редактируете.
Короче говоря, мне понадобится какая-то опция администратора, чтобы сделать что-то вроде этого:
# admin.py
class LocationInline(admin.TabularInline):
model = Location
class ContractInline(admin.TabularInline):
model = Contract
class CompanyAdmin(admin.ModelAdmin):
inlines = (ContractInline, LocationInline)
inline_filter = dict(Location__company='self')
В конечном счете мне было бы безразлично, если процесс фильтрации был размещен на базе CompanyAdmin, или если он был помещен в ContractInline. (Размещение его на inline имеет больше смысла, но это затрудняет ссылку базового контракта как «я».)
Есть ли кто-нибудь, кто знает что-то столь же прямое, как этот крайне необходимый ярлык? Назад, когда я сделал администраторов PHP для такого рода вещей, это считалось базовой функциональностью! Фактически, он всегда был автоматическим и должен был быть отключен, если вы действительно этого не хотели!
Crontab нужен полный путь на вашем сервере.
0 0 * * * php /var/www/vhosts/domain.com/httpdocs/scripts/example.php
Это будет выполняться каждый день в полночь.
Примерно так:
00 * * * * /usr/local/bin/php /home/john/myscript.php
00 * * * * означает ежечасно / usr / local / bin / php - где основной движок php находится в /home/john/myscript.php - скрипт для запуска (физический путь)
Вы также можете использовать специальный ключ @hourly:
@hourly /usr/local/bin/php /home/john/myscript.php
Используете ли вы компанию для размещения своего сайта?
Поскольку в вашем c panel
у вас должен быть значок, который называется cron jobs
, вы можете указать ему, какой сценарий выполнять и когда.
Если у вас есть доступ sudo к вашему Linux-серверу: - Затем выполните следующее
sudo crontab -e
. Откроется вкладка cron на вашем сервере.
Далее вам нужно сделать запись cron для файла, который вы хотите выполнить
00 00 * * * /usr/local/bin/php "path of the php file which you want to execute"
00 00 * * *
, который будет запускать ваш cron ежедневно в полночь, то есть в 0 часов и 0 минут