2009-10-18 1 views
1

Я хочу, чтобы выполнить произвольный файл .py, скажу foo.py на папке MyProject/MYAPP с помощью crobjob некоторых периодовДжанго и выполнение отдельного .py в manipute базы данных,

У меня есть эта базовая модель в мой model.py для приложения:

class Mymodel(models.Model): 
    content = models.TextField() 

Скажет, у меня есть это в моем foo.py, я хочу, чтобы проверить, есть ли MyModel объект, который имеет поле контента, так же, как MYTEXT, если не сделать новое Mymodel с mytext как контент, если уже существующий ничего не делает.

<do django importings> 
mytext = "something here" 
if Mymodel.filter(content=mytext) == null: 
    newitem = Mymodel(content=mytext) 
    newitem.save() 
else: 
    pass 

Итак, вот мой вопрос, какой импорт django мне делать? Также как я могу проверить, нет ли запроса в элементе (не знаю, работает ли Mymodel.filter (content = mytext) == null. Также я не знаю, эффективен ли это для достижения моей цели, как количество MyModel будет высокой

Благодаря

ответ

5

у вас есть два отдельных вопроса здесь -.. это было бы лучше разделить их

чтобы запустить отдельный сценарий, вы лучше с создавая ./manage.py. См. the documentation о том, как это сделать.

Для вашего второго вопроса код, который вы указали, недействителен. Py thon, так как нет «нулевого» значения - вы имеете в виду None. Однако даже тогда код не будет работать, так как это не то, как вы пишете этот запрос с помощью Django ORM. Вы хотите что-то вроде этого:

if not MyModel.objects.filter(content=mytext).count(): 

, который запрашивает базу данных, сколько элементов имеются с содержанием = MYTEXT, и Истина, если их нет.

+0

thabjs alot daniel для ответа, мне нужно импортировать django и модели при выполнении пользовательских команд? В документации отсутствует подробная информация. – Hellnar

+1

Вам всегда нужно импортировать свои модели, если вы используете их в своем скрипте, и какие модули Django вы используете. Это относится к любому коду Python. –

2

Вы также можете ознакомиться с django-extensions, который имеет встроенное расширение manage.py под названием «сценарий», которое выполняет любой скрипт python в контексте проекта django.

Смежные вопросы